主要思路:异或 + 哈希

数组中只出现一次的数字

http://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811

异或法则:
n^0 = n;
n^n = 0;
n^n^m = n^(n^m)

    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        if(array == null || array.length == 0)return;
        int res = 0;
        for(int i = 0;i < array.length;i++){
            res  ^=array[i];
        }
        int index = res & (-res);
        num1[0] = 0;num2[0] = 0;
        for(int i = 0;i< array.length;i++){
            if((index&array[i]) == 0){
                num1[0] = num1[0] ^ array[i];
            }else{
                num2[0] = num2[0] ^array[i];
            }
        }
    }
全部评论

相关推荐

09-27 14:42
已编辑
浙江大学 Java
未来未临:把浙大放大加粗就行
点赞 评论 收藏
分享
10-15 09:13
已编辑
天津大学 soc前端设计
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务