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?
这里用到了一个技巧:一个数和另一个数异或两次,结果仍是这个数.
class Solution{
public:
int singleNumber(vector<int> &nums){
if(nums.empty())
return -1;
int ret = nums[0];
for(vector<int>::iterator iter = nums.begin()+1; iter != nums.end(); ++iter){
ret = ret^ *iter;
}
return ret;
}
};