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;
}
相关推荐
编啊编程啊程22 分钟前
gRPC从0到1系列【6】
java·rpc·kafka·dubbo·nio
Asmalin1 小时前
【代码随想录day 29】 力扣 860.柠檬水找零
算法·leetcode·职场和发展
宸津-代码粉碎机1 小时前
Redis 进阶:跳出缓存局限!7 大核心场景的原理与工程化实践
java·人工智能·redis·python
极客先躯1 小时前
Spring Statemachine 架构详解
java·spring·架构
ccccczy_1 小时前
Java微服务容器化与 Kubernetes 编排实战:从 Docker 多阶段构建到云原生弹性扩展
java·docker·kubernetes·springboot·microservices·cloudnative·containerization
沉木渡香2 小时前
VSCode中Java开发环境配置的三个层级(Windows版)1-3
java·windows·vscode
程序员小白条2 小时前
度小满运维开发一面
java·运维·python·职场和发展·运维开发
Leo655357 小时前
JDK8 的排序、分组求和,转换为Map
java·开发语言
Asmalin9 小时前
【代码随想录day 29】 力扣 135.分发糖果
算法·leetcode·职场和发展
微笑尅乐9 小时前
多解法详解与边界处理——力扣7.整数反转
算法·leetcode·职场和发展