数组中数字出现的次数 II

在一个数组 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;
    }
};