Leetcode136. 只出现一次的数字(HOT100)
我的代码:
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
原文地址:https://blog.csdn.net/kitesxian/article/details/144041961
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!