题解 | #数组中只出现一次的数(其它数出现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;
    }
}
全部评论

相关推荐

06-27 15:29
门头沟学院 Java
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务