除了某个元素只出现一次以外,其余每个元素均出现两次,找出它。
-
示例 1
输入:[2, 2, 1, 3, 3]
输出:1
-
示例 2
输入:[4, 1, 2, 1, 2]
输出:4
第一种方法:
int singleNumber(vector<int>& nums)
{
int r = 0;
for(int v : nums)
r ^= v; // 异或运算 2^2^3^1^1=0^3^0=3
return r;
}
第二种方法:
int singleNumber(vector<int>& nums)
{
unordered_set<int> hashset; // hash set
for(int v : nums){
if(hashset.count(v)) // 打得过 就干掉
hashset.erase(v);
else // 打不过 就加入
hashset.insert(v);
}
return (*hashset.begin()); // 剩下一个开心了。。。
}