leetcode 面试题 17.04.消失的数字

目录

问题描述

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗?:

题目链接:消失的数字

示例

具体思路

思路一

排序,依次查找,如果下一个数不是上一个数+1,那么上一个数+1就是消失的数字。算法的时间复杂度为0(N*logN)

思路二

采用异或的方法,异或的特点是,两个数字进行异或,相同为0不同为1,先将数组中的数字全部异或一遍,再将异或后的结果与0-n中所有的数字异或一遍,最后剩下的那个数字就是消失的数字 。算法的时间复杂度为O(N)

思路三

采用0-N等差数列公式进行计算,减去数组中的值,最后剩下的就是那个消失的数字。算法的时间复杂度为O(N)

代码实现

cpp 复制代码
//思路二
int missingNumber(int* nums, int numsSize) {
    int x=0;
    for(int i=0;i < numsSize;i++)
    {
        x ^= nums[i];
    }
    for(int i = 0;i < numsSize+1;i++)
    {
        x ^= i;
    }
    return x;
}
cpp 复制代码
//思路3
int missingNumber(int* nums, int numsSize) {
    int x = (0 + numsSize)*(numsSize+1)/2;

    for(int i = 0; i< numsSize ; i++)
    {
        x -= nums[i];
    }
    return x;
}
相关推荐
yue0087 分钟前
C# 求取整数的阶乘
java·开发语言·c#
可观测性用观测云11 分钟前
JAVA Heap Dump 采集最佳实践
java
一 乐13 分钟前
个人博客|博客app|基于Springboot+微信小程序的个人博客app系统设计与实现(源码+数据库+文档)
java·前端·数据库·spring boot·后端·小程序·论文
曹绍华20 分钟前
android 线程loop
android·java·开发语言
我命由我1234525 分钟前
Android 开发 - Android JNI 开发关键要点
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
晴殇i27 分钟前
前端代码规范体系建设与团队落地实践
前端·javascript·面试
YG亲测源码屋38 分钟前
怎么让自己的网址被百度收录(网站如何被百度收录进去)
java·百度·dubbo
风筝在晴天搁浅39 分钟前
代码随想录 Q89.跳跃游戏Ⅱ
java
tryxr1 小时前
变量捕获相关内容
java·开发语言·jvm
拉不动的猪1 小时前
Token无感刷新全流程(Vue + Axios + Node.js(Express))
java·javascript·vue.js