问题描述
数组A中,除了某一个数字x之外,其他数字都出现了三次,而x出现了一次。请给出最快的方法找到x。
类似题目:
public static int FindNumber(int a[]){
if(null == a || a.length == 0){
return -1;
}
int[] bits = new int[32];
for (int i = 0; i < a.length; i++){
for (int j = 0; j < 32; j++){
bits[j] += ((a[i] >> j) & 1);
}
}
// 如果某位上的结果不能被整除,则肯定目标数字在这一位上为
int result = 0;
for (int j = 0; j < 32; j++){
if (bits[j] % 3 != 0){
result += (1 << j);
}
}
return result;
}