137. Single Number II

Given an array of integers, every element appears three times except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

Single Number I 解法

把每个数字转换成二进制,然后每一位加起来模3,最后结果就是剩下的那个数字

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        vector<int> bits(32, 0); 
        for(int i = 0; i < nums.size(); i++){
            int x = nums[i];
            for(int j = 0; j < 32; j++){
                bits[j] = bits[j] + ( (x >> j) & 1);
            }
        }
        int res = 0;
        for(int i = 0; i < 32; i++){
            res |= ( ( bits[i] % 3 ) << i );
        }
        return res;
    }
};

你可能感兴趣的:(137. Single Number II)