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?
思路:本题时间复杂度要求较高,一时间没想到用位运算,或许也是自己菜吧,位运算用的少。google了一下才知道用位运算可以解决。
本题使用异或预算。因为axorb=bxora; AxorA=0,AxorB=1(A!=B)
0xorALL=ALL;因为本题只有一个数字是单独出现的,所以将所有数字异或一遍的结果就是那个只出现一次的数字。
代码如下(已通过leetcode)
public class Solution {
public int singleNumber(int[] nums) {
int ans=0;
for(int i=0;i<nums.length;i++)
ans^=nums[i];
return ans;
}
}