丢失的数字——异或运算

异或运算

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

 

 

posted @ 2023-11-07 11:00  Karle  阅读(14)  评论(0编辑  收藏  举报