题目: https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof/
一个数组出现了3次,二进制位也会出现3次
把所有的出现的三次的数字的二进制表示的每一位都分别加起来,那么每一位都能够被3整除
我们把数组中所有的数字的二进制表示的每一位都加起来。
如果某一位不能被3整除,那么只出现一次的那个数字的该位置一定为1。
class Solution {
public int singleNumber(int[] nums) {
int[] k = new int[32];
for(int i = 0; i < nums.length; i++){
for(int j = 0; j < 32; j++){
k[j] += (nums[i]>>j & 1) == 1? 1:0;
}
}
int res = 0;
for(int i = 31; i >= 0; i--){
//左移 右边补0
res = res << 1;
if(k[i]%3 == 1){
res = (res | 1);
}
}
return res;
}
}