题解 | #数组中只出现一次的数(其它数出现k次)#

数组中只出现一次的数(其它数出现k次)

https://www.nowcoder.com/practice/5d3d74c3bf7f4e368e03096bb8857871

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param arr intvector
     * @param k int
     * @return int
     */
    int foundOnceNumber(vector<int>& arr, int k) {
        // 1. binarySum求二进制的每一位的1出现累计次数
        vector<int> binarySum(32);
        for (int i = 0; i < 32; ++i) {
            int sum = 0;
            for (int& x : arr) {
                // x >> i & 1 用于判断x的第i位数字是否为1
                sum += (x >> i & 1);
            }
            binarySum[i] = sum;
        }
        int res = 0;
        for (int i = 0; i < 32; ++i) {
            if (binarySum[i] % k == 0)   continue;
            // 1 << i 说明第i位置是1 通过 | 或运算求res
            res |= 1 << i;
        }
        return res;
    }
};

全部评论

相关推荐

耀孝女:就是你排序挂了
点赞 评论 收藏
分享
尊嘟假嘟点击就送:加v细说,问题很大
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务