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;
}
相关推荐
填满你的记忆1 分钟前
【计算机网络·基础篇】TCP 的“三次握手”与“四次挥手”:后端面试的“生死线”
java·网络·网络协议·tcp/ip·计算机网络·面试
源代码•宸2 分钟前
Golang原理剖析(逃逸分析)
经验分享·后端·算法·面试·golang··内存逃逸
量子炒饭大师7 分钟前
【C++入门】面向对象编程的基石——【类与对象】基础概念篇
java·c++·dubbo·类与对象·空指针规则
重生之后端学习8 分钟前
25. K 个一组翻转链表
java·数据结构·算法·leetcode·职场和发展
段子子11 分钟前
【使用MQTT】
java
坐在地上想成仙11 分钟前
从机床到键盘:用机械设计思维写出一个可部署网页
java·c++·python
ros27522913 分钟前
idea & gitee 使用教程
java·gitee·intellij-idea
叫码农就行15 分钟前
spring cloud 笔记
java·笔记·spring cloud
青云交15 分钟前
Java 大视界 -- Java 大数据机器学习模型在电商商品推荐系统中的冷启动问题攻克与个性化推荐强化
java
WZTTMoon19 分钟前
Spring Boot 为何不推荐使用@Autowired
java·spring boot·spring