LeetCode 137 Single Number II

LeetCode 137

在二进制的每个位置上,

数组的每个数的二进制都相加,最终得到的值,要么%3==1

要么%3==0

%3==1组成的二进制就是那个单独的数字

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        
        int ans=0;
        for(int i=0;i<32;i++)
        {
            int x=0;
            for(int j=0;j<nums.size();j++)
            {
                x += ((nums[j]>>i)&1);
               
            }
            if(x%3==1)
            {
                ans |= (1<<i);
            }
        }
        return ans;
        
    }
};