题解 | #最长无重复子数组#
数组中只出现一次的数(其它数出现k次)
http://www.nowcoder.com/practice/5d3d74c3bf7f4e368e03096bb8857871
public int foundOnceNumber (int[] arr, int k) {
// write code here
//k为偶数,直接异或
int res=0;
if((k&1)==0){
res=arr[0];
for(int i=1;i<arr.length;i++) {
res^=arr[i];
} return res;
} else {//k为奇数
//取每个数字的第bit位 相加 得到cnt
for(int bit=31;bit>=0;bit--) {
int cnt=0;
for(int j=0;j<arr.length;j++) {
cnt+=(arr[j]>>bit)&1;
}
//res累加这些 cnt%k cnt%k必然会把单独的数筛选出来
res=(res<<1)+cnt%k;
}
}
return res;
} 

查看22道真题和解析