剑指 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;
}
};