剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣(LeetCode)

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

思路:


image-20221111165819396

复杂度:

O(k)

题解:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int count[32];
        memset(count,0,sizeof(count));
        for(int it:nums){
            for(int i=0;i<32;i++){//统计数字在各32位中1的数量 
                count[i]+=(1&it);
                it>>=1;
            }
        }
        int res=0;
        for(int i=0;i<32;i++){
            res+=(1<<i)*(count[i]%3);//实际上 根据题设的不同,3可以任意更改
        }
        return res;
    }
};