Given a non-empty 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?
Example 1:
Input: [2,2,1] Output: 1
Example 2:
Input: [4,1,2,1,2] Output: 4
异或运算,学到了
1. 0^n=n
2.n^n=0
3.n1^n1^n2^n2^n3^n3=n1^ n2^ n3^ n1^ n2^ n3 (交换律 结合律)
class Solution {
public:
int singleNumber(vector<int>& nums) {
int ans=0,i;
for(i=0;i<nums.size();i++){
ans=ans^nums[i];
}
return ans;
}
};