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

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

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

提供一种当k为偶数时的简便思路,但并不适用于k为奇数:
当k为偶数时,说明重复的数字是可以两两抵消的,什么样的操作可以让重复数字两两抵消呢?
对就是亦或,任意两个相同的数字按位进行亦或运算结果一定为0,同时亦或运算是满***换律的,我们始终可以把相同的数字放在一起亦或消去,最后只剩下0与那个出现只有一次的数进行亦或,最后结果就是只出现一次的那个数

if(k%2==0){
    int ans = 0;
        for(int i=0;i<arr.length;i++){
            ans = ans^arr[i];
        }
    return ans;
}
全部评论

相关推荐

Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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