public class Solution {
public int singleNumber(int[] A) {
if (A.length<=1) return A[0];
int[] count = new int[32];
int res = 0;
for (int i=0; i<32; i++) {
for (int j=0; j<A.length; j++) {
if (((A[j]>>i)&1)==1) count[i] = (count[i]+1)%3;
}
res |= count[i]<<i;
}
return res;
}
}
用32位数组count[]表示A中每个数的二进制,出现3次的数的count[]为0,count[]相当于single number的二进制.
回复删除注意((A[j]>>i)&1)==1 括号的使用.
回复删除