自学内容网 自学内容网

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)!