137. Single Number II

来源:互联网 发布:阴阳师录屏软件 编辑:程序博客网 时间:2024/05/20 13:17

这道题是上一个的延伸,上一个是每个数字出现两次,这个是每个数字出现三次,找出唯一一个没有出现三次的数字。

同样是用位运算。首先把这些数每一位分别加起来,然后每一位除以3,余数就是没有出现三次的数在这一位的值。

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