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?
分析:
根据异或的特性,相同为0,不同为1,所有数异或,最终的结果即只出现一次唯一的数。
异或还可以找到出现奇数次的唯一数。
class Solution {
public:
int singleNumber(vector<int>& nums) {
int x = 0;
for (int i = 0; i < nums.size(); i++)
x ^= nums[i];
return x;
}
};