题目
分析
我们把每个数看成二进制,统计所有元素相同位置的1的个数假设为counter,然后counter对k求余,余数就是出现一次的元素二进制在该位置上的0或者1。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param arr int一维数组
* @param k int
* @return int
*/
public int foundOnceNumber (int[] arr, int k) {
// write code here
int res = 0;
for(int i = 0; i < 32; i++) {
int counter = 0;
for(int j = 0; j < arr.length; j++) {
if(((arr[j] >> i) & 1) == 1) {
counter++;
}
}
//System.out.println("i="+i+",counter="+counter);
counter = counter % k;
res = res + counter * (1<<(i));
}
return res;
}
}