丢失的数字——异或运算
异或运算
1.0和任何数字异或 === 任何数字本身
2.相同数字异或 === 0,不相同数字异或 === 1
3.遵循交换律,结合律
题目
给定一个包含 [0, n]
中 n
个数的数组 nums
,找出 [0, n]
这个范围内没有出现在数组中的那个数。
输入:nums = [3,0,1] 输出:2
输入:nums = [0,1] 输出:2
输入:nums = [0] 输出:1
解题
var missingNumber = function (nums) {
let res = 0
res = res ^ nums.length
for(let i = 0; i < nums.length; i++) {
res = res ^ i ^ nums[i]
}
return res
};
//[0,1,3]
//res = 0 ^ 3
//res = 0 ^ 3 ^ 0 ^ 0
//res = 0 ^ 3 ^ 0 ^ 0 ^ 1 ^ 1
//res = 0 ^ 3 ^ 0 ^ 0 ^ 1 ^ 1 ^ 2 ^ 3
//res = 0 ^ 0 ^ 0 ^ 1 ^ 1 ^ 3 ^ 3 ^ 2
//res = 2