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

// 存在一个数组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 @ 2024-03-20 10:40  奔跑的哈密瓜  阅读(3)  评论(0编辑  收藏  举报