链接
我的代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
unordered_set<int> s;
for(auto&e:nums){
if(s.count(e)==0)
s.insert(e);
else
s.erase(e);
}
return *(s.begin());//not s.pop(),unordered_set没有pop方法。
}
};
更好的代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
int unique = 0;
for(auto&e:nums){
unique^=e;//xor
}
return unique;
}
};
妙哉 ,异或:同则为0,异则为1。
原来数组:a b b a c
答案为c
怎么做?
答:(a^a) ^(b^b)^(c) = 0^0^c = 0^c = c