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;
}
相关推荐
Chase_______1 分钟前
【Java基础核心知识点全解·09】Java 内存布局与垃圾回收详解:栈、堆、栈帧、GC Roots 与对象回收
java·开发语言
武子康4 分钟前
Java-11 深入浅出 MyBatis 一级缓存详解:从原理到失效场景 Executor
java·后端
寻道码路18 分钟前
LangChain4j Java AI 应用开发实战(十):Embedding 模型与文本分类 - 语义向量化
java·人工智能·ai·embedding
折哥的程序人生 · 物流技术专研21 分钟前
Java 23 种设计模式:从踩坑到精通 | 抽象工厂 —— 支付/收款如何成套创建?跨平台 UI 如何一键换肤?
java·开发语言·后端·设计模式
方也_arkling24 分钟前
【Java-Day11】抽象类和抽象方法
java·开发语言
XS03010628 分钟前
并发编程 七
java
小欣加油44 分钟前
leetcode 3300 替换为数位和后的最小元素
数据结构·c++·算法·leetcode
YikNjy1 小时前
string(c++)
java·服务器·c++
小江的记录本1 小时前
【Spring AI】Spring AI中RAG误触发与系统提示词泄露问题解决方案(完整版+代码方案)
java·人工智能·spring boot·后端·python·spring·面试
勇往直前plus1 小时前
Python 属性访问与操作全解析:内置函数、魔法方法与描述符深度指南
java·网络·python