在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。
思路
按位统计,如果某一位的余数不为0,则这一位必属于只出现一次的数。
代码
class Solution {
public:
int singleNumber(vector<int>& nums) {
int bytes = sizeof(int);
int totalBit = bytes*8;
vector<int> bitArr(totalBit);
for(int num: nums) {
for(int i = 0;i < totalBit;i++) {
bitArr[i] += (num & (1 << i))>0?1:0;
}
}
int ans = 0;
for(int i = 0;i < totalBit;i++) {
ans = ans << 1;
ans |= bitArr[totalBit - i - 1] % 3;
}
return ans;
}
};