题目:
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?
代码: int singleNumber(vector<int>& nums) {
int n = 0;
for(int i = 0; i < nums.size(); ++i)
{
n ^= nums[i];
}
return n;
}
运用"按位异或"
a^b^a = b;
将所有数异或,所有出现两次的都消除,得到出现一次的那个.