问题:
Given an array of integers, every element appears twice except for one. Find that single one.
代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int n = nums.size();
int a = 0;
for(int i =0;i<n;i++){
a = a ^ nums[i];
return a;
}
}
};
解析:
这个问题这主要目标就是找出数组中的只出现一次的元素,即排除出现过两次的元素,那么我们就可以利用“”异或“”来进行运算,即相同的元素异或后为0,0异或a = a。
比如说[2,2,1]那么我们int a = 0;a xor 2 = 2, a=2,
然后再次 a xor 2 = 0(因为a此时为2 2异或2 为0 )
最后 a=0 a xor 1 = 1;
输出结果为1.