题解 | #数组中只出现一次的数(其它数出现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; } };