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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public int singleNumber(int[] nums) {
int[] bitCount = new int[32];

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

int num = 0;
for (int i = 0; i < 32; i++) {
if (bitCount[i] % 3 != 0) {
num |= (1 << i);
}
}

return num;
}
}

References

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