数组中只出现一次的数字

数组中只出现一次的数字

https://www.nowcoder.com/practice/e02fdb54d7524710a7d664d082bb7811?tpId=117&tqId=37773&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-code-high%2Fquestion-ranking&tab=answerKey

//num1,num2分别为长度为1的数组。传出参数
//将num1[0],num2[0]设置为返回结果
public class Solution {
    public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) {
        int yh = 0;
        for(int i=0;i<array.length;i++){
            yh = yh ^ array[i];
        }
        int index = 1;
        //找到第一个二进制为1的位置
        while((index & yh) ==0){
            index = index << 1;
        }
        int res1 = 0;
        int res2 = 0;
        //按照该位置是否为1 分成两部分 分别异或  问题转化成两个数组中只有一个数字出现一次 其余数字都出现两次
        for(int a:array){
            if((a&index)==0) res1=res1 ^ a;
            else res2 = res2 ^ a;
        }
        num1[0] = res1;
        num2[0] = res2;
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
用微笑面对困难:不是你千万别小看这家公司,他们的预估市值成倍上涨,三次在报告看见这个公司了,总之如果是给股权的话可以试试,未来没准真能发家致富哈哈哈哈
点赞 评论 收藏
分享
09-06 10:38
井冈山大学 Java
offer哪里跑__:第一眼,有点面生 第二眼,原来是我的余生 哥不白看,哥把这个月实习工资都给你,这是哥实习一天一天辛苦攒的,虽然少,但不真
正在实习的你,几点下班
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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