思路:
整体的一个思路就是对 n 个数所有的位求和,然后 在对每一个位上的 sum mod 3 ,这样就能够把单独的那个数字找出来
代码:
public int singleNumberII(int[] A) {
int result = 0;
for (int i = 0; i < 32; i++) {
int count = 0;
for (int j = 0; j < A.length; j++) {
if(isBit(A[j], i)) {
count++;
}
}
result |= (count % 3) << i; // 这里的位运算也是非常的巧妙
}
return result;
}
boolean isBit(int num, int index){ // 判断第 index 位是否为 1
num = num >> index; // 这里也是非常巧妙地一个地方
return (num & 1) == 1 ;
}