数组中数字出现的次数(中等)
2020年9月10日
题目来源:力扣
解题
每个数字都会出现3次的话,那么转成二进制相加,肯定会是3的倍数,对3求余的话,那个只出现一次的数字就会出现了。
class Solution {
public int singleNumber(int[] nums) {
int[] tmp=new int[32];
for(int num:nums){
for(int i=0;i<32;i++){
//取最后一位
tmp[i]+=num&1;
num>>>=1;
}
}
int res=0;
for(int i=0;i<32;i++){
res<<=1;
res|=tmp[31-i]%3;
}
return res;
}
}