题解 | #数组中只出现一次的数(其它数出现k次)#
数组中只出现一次的数(其它数出现k次)
http://www.nowcoder.com/practice/5d3d74c3bf7f4e368e03096bb8857871
位运算
还是用位运算的思想,不能直接相异,因为不知k的奇偶,所以需要将每一个数的二进制位个数求和,如果不是k的倍数证明答案有该二进制位。
import java.util.*;
public class Solution {
public int foundOnceNumber (int[] arr, int k) {
// write code here
int[] binarySum = new int[32];
int i,j,ans=0;
for(i=0;i<32;i++){
for(j=0;j<arr.length;j++){
if(((arr[j]>>i)&1)== 1)binarySum[i]++;
}
}
for(i=0;i<32;i++){
if(binarySum[i]%k!=0)ans+=1<<i;
}
return ans;
}
}