剑指 Offer 56 - II. 数组中数字出现的次数 II
思路:
因为每个数都出现了3次,所以枚举32位二进制位的时候,如果这一位出现的次数不是3的整数倍,那一定是答案在一位的二级制位出现过。
代码:
class Solution {
public:
int singleNumber(vector<int>& nums) {
vector<int> f(32, 0);
for(auto x : nums){
for(int i = 0; i < 32; i++){
f[i] += (x >> i & 1);
}
}
int ans = 0;
for(int i = 0; i < 32; i++){
if(f[i] % 3) ans |= (1 << i);
}
return ans;
}
};
评论区