数组中只出现一次的数字

数组中只出现一次的数字

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;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-26 15:46
已编辑
字节国际 电商后端 24k-35k
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
10-30 10:16
南京大学 Java
永远的鹅孝子:给南大✌️跪了
点赞 评论 收藏
分享
小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务