题解 | #数组中只出现一次的数(其它数出现k次)#

数组中只出现一次的数(其它数出现k次)

http://www.nowcoder.com/practice/5d3d74c3bf7f4e368e03096bb8857871

位运算

还是用位运算的思想,不能直接相异,因为不知k的奇偶,所以需要将每一个数的二进制位个数求和,如果不是k的倍数证明答案有该二进制位。

alt

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;
    }
}
全部评论

相关推荐

冲芭芭拉鸭:你这图还挺新,偷了。
投递美团等公司10个岗位
点赞 评论 收藏
分享
1 1 评论
分享
牛客网
牛客企业服务