Leetcode 137. 只出现一次的数字 II 位运算

原题链接:Leetcode 137. 只出现一次的数字 II
Leetcode 137. 只出现一次的数字 II 位运算_第1张图片
排序:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int cnt=1,cur=nums[0];
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]!=cur)
            { 
                if(cnt!=3) break;
                cur=nums[i];
                cnt=0;
            }
            cnt++;
        }
        return cur;
    }
};

位运算:Leetcode 137. 只出现一次的数字 II 官解

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int res=0;
        for(int i=0;i<32;i++)
        {
            int tmp=0;
            for(auto num:nums)  
                tmp+=((num>>i)&1);
            if(tmp%3)  res|=(1<<i);
        }
        return res;
    }
};

你可能感兴趣的:(Leetcode,leetcode,算法,c++)