面试题56-2:数组中数字出现的次数
文章目录
题目
在一个数组 nums
中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字
考点
位运算,将每个数每个位相加,结果再复原
LeetCode版本
class Solution {
public:
int singleNumber(vector<int>& nums) {
int bitSum[32] = {0};
for(int i =0; i < nums.size();i ++){
for(int j = 31; j>=0; j--){
if((nums[i]>>(31-j) & 0x1) != 0){
bitSum[j]++;
}
}
}
int res(0);
for(int i=0;i<32;i++){
res = res<<1;
res += bitSum[i]%3;
}
return res;
}
};