侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

剑指 Offer 56 - II. 数组中数字出现的次数 II

Hope
2022-09-30 / 0 评论 / 1 点赞 / 451 阅读 / 326 字
温馨提示:
本文最后更新于 2022-09-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

剑指 Offer 56 - II. 数组中数字出现的次数 II
思路:

因为每个数都出现了3次,所以枚举32位二进制位的时候,如果这一位出现的次数不是3的整数倍,那一定是答案在一位的二级制位出现过。

代码:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        vector<int> f(32, 0);

        for(auto x : nums){
            for(int i = 0; i < 32; i++){
                f[i] += (x >> i & 1);
            }
        }

        int ans = 0;

        for(int i = 0; i < 32; i++){
            if(f[i] % 3) ans |= (1 << i);
        }
        return ans;
    }
};

1

评论区