// 存在一个数组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
标签:运算,个数,异或,解题,丢失,数组,result From: https://www.cnblogs.com/lisir-blogshare/p/18084732