// 该数组中仅有一个出现k次的数字 且 m>1, k<m;
public static int onlyOneTimes(int[] arr, int k, int m){
// 新建一个32位数组存放每个数字的标志位
int[] t = new int[32];
for (int i : arr) {
for (int j = 0; j <= 31; j++) {
t[j] += ((i >> j) & 1);
}
}
int ans = 0;
for (int i = 0; i < t.length; i++) {
// 说明该数字在i位置为1
if (t[i] % m != 0){
ans |= (1 << i);
}
}
return ans;
}
Last updated:
这里可以写作者留言,标签和 hexo 中所有变量及辅助函数等均可调用,示例:/null/位运算的妙用/