消失的数字

简介: 消失的数字

使用异或思想

空间复杂度:O(1)

时间复杂度:O(N)

1.0^x = x;

2.x^x = 0; 同样的数异或两次得到零

3.异或满足交换律

实现思路:

4. 先异或[0,n]的所有数字,再异或nums数字的所有数字:

5. 由于想同的数异或会得到0,并且0异或任意数结果都是任意数,

6. 所以再本题中,异或两次的会被变为0,异或一次的就不会发生变化:那么小时的数字就会出来了 比如:

输入:[3,0,2] :

先异或:0到n的所有数字:X^ 1 ^ 2^3;

再异或数组: X^ 1 ^ 2^ 3 ^ 3^ 0 ^ 2 = 0^ 1^ 2^ 2 ^3 ^3 = 1; 即1是消失的数字。

注:异或0-numsSize的所有数字时需要循环numsSize+1次,异或数组nums时只用循环numsSize次

int missingNumber(int* nums, int numsSize){
        //先异或0-numsSize的所有数字
        int x = 0;
        for(int i = 0 ;i<=numsSize;i++){
                x ^= i;
        }
        //再异或nums数组所有的值
        for(int i = 0;i <numsSize;i++){
            x ^= nums[i];
        }
        //最后的结果就是消失的数字
        return x;
}
相关文章
键盘数字区域不可用解决办法
目前归纳了两种场景以及对应的处理办法
821 0
键盘数字区域不可用解决办法
|
4天前
|
C语言
【05】消失的数字
【05】消失的数字
|
4天前
每日一题——找到消失的数字
每日一题——找到消失的数字
|
4天前
|
索引
leetcode-448:找到所有数组中消失的数字
leetcode-448:找到所有数组中消失的数字
17 0
|
10月前
解 消失的数字
解 消失的数字
|
6月前
448.找到所有数组中消失的数字
448.找到所有数组中消失的数字
|
11月前
|
搜索推荐
面试题 17.04. 消失的数字
面试题 17.04. 消失的数字
68 0
|
12月前
|
存储 机器学习/深度学习 自然语言处理
GPT-4的32k输入框还是不够用?Unlimiformer把上下文长度拉到无限长
GPT-4的32k输入框还是不够用?Unlimiformer把上下文长度拉到无限长
141 0
448. 找到所有数组中消失的数字
448. 找到所有数组中消失的数字
58 0
448. 找到所有数组中消失的数字
|
存储 算法 Java
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
算法打卡Day5_lecode_448. 找到所有数组中消失的数字