136. Single Number

来源:互联网 发布:广西广电网络收费套餐 编辑:程序博客网 时间:2024/06/02 07:33

Given an array of integers, every element appears twice except for one. Find that single one.

Note:

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?


还是用了额外空间。。

hash记录,第一次sum加,出现过sum就与之相减,最后留下的就是这个只出现一次的。

public static int singleNumber(int[] nums){HashSet<Integer> hashset=new HashSet<>();int sum=0;for(int n:nums)if(!hashset.contains(n)){hashset.add(n);sum+=n;}else {sum-=n;}return sum;}

-----------------------------------------------------------------------------------------------------------------

比较好的空间O(1)办法是异或,a^a=0,异或本身为0,利用这个,直接异或一遍就出来了。

public int singleNumber(int[] nums) {    int ans =0;    int len = nums.length;    for(int i=0;i!=len;i++)        ans ^= nums[i];    return ans;}


0 0
原创粉丝点击