找到丢失的数,异或运算解题

复制代码
// 存在一个数组A包含n-1个数,这些数为1到n之间的整数,请找到丢失的数?
// 这里采用异或运算(都为二进制运算):
//                 1.相同数异或为0
//                 2.不同值异或为1
//                 3.0^0 = 0      
//                 4.0^x = x  (x不为0)
//                 5.x^y^z = x^(y^z)  可以使用交换律

// 解题思路:数组A中存在n-1个数,那么n个数中一定包含数组A中的所有数,根据异或运算相同数异或为0,我们将n个数与数组A异或,n-1个数最终异或结果为0,0与除0外任意数异或为任意数,这样就可以找到丢失的数了

function XORFun(arr,n){
     //数组A为arr
    // 默认初始值为0
    let result = 0;
    // 遍历n个数
    for(let i = 1;i<=n;i++){
        result ^=i;
    }
    // 遍历数组A中的n-1个数
    arr.forEach(item=>{
        result ^=item
    })
    // 返回丢失的数
    return result;
}
console.log(XORFun([1,2,3,4,5,6,8,9,10,11],11))//7
复制代码

 

posted @   奔跑的哈密瓜  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示