题解 | #最长无重复子数组#

数组中只出现一次的数(其它数出现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;
    }

全部评论

相关推荐

点赞 评论 收藏
分享
09-29 15:34
已编辑
北京航空航天大学 C++
做个有文化的流氓:结果是好的,过程不重要,而且你的offer太多了
软开人,秋招你打算投哪些...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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