【数据结构】Leedcode消失的数字(面试题)

news2025/1/6 19:47:01

目录

          一、题目说明

          二、题目解析


一、题目说明 

题目链接: leetcode消失的数字

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

示例1:

输入:[3,0,1]

输出:2

示例2:

输入:[9,6,4,2,3,5,7,0,1]

输出:8 

二、题目解析 

方法1:

我们可以将0-n的数字相加,然后减去输入的数字,最终返回的结果就是我们想要得到的。

int missingNumber(int* nums, int numsSize) 
{
    int N = numsSize;
    int ret = N * (N + 1) / 2;//0-n之间所有整数和
    for (int i = 0; i < numsSize; ++i)
    {
        ret -= nums[i];
    }
    return ret;
}

时间复杂度为:O(N)。

方法2:

先设定一个假设缺失的数字x=0,让x先跟0-n所有的数字异或,x再和数组中的每个数字异或,最终x的值就是缺少的那个数字。

首先先普及一下:

两个相同的数字异或的结果为0。

0和任何一个数字异或还是数字本身。

int missingNumber(int* nums, int numsSize) 
{
    int N = numsSize;
    int x = 0;// 缺失的数字
    for (int i = 0; i < N; ++i)//先和数组里面的数字异或
    {
        x ^= nums[i];
    }
    for (int j = 0; j < N + 1; ++j)//再和0-n之间的数字异或
    {
        x ^= j;
    }
    return x;
}

时间复杂度为:O(N)。


本文提供了两种方法,应该还有其他的最优解,欢迎大家在下面评论,互相帮助共同提高。

本文要是有不足的地方,欢迎大家在下面评论,我会在第一时间更正。

 老铁们,记着点赞加关注哦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/118635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

菜鸟也能懂的 - 音视频基础知识。

前言 说到视频&#xff0c;大家自己脑子里基本都会想起电影、电视剧、在线视频等等&#xff0c;也会想起一些视频格式 AVI、MP4、RMVB、MKV等等。 但是我们如果认真思考这些应该就有很多疑问&#xff0c;比如以下问题&#xff1a; mp4 和 mkv有什么区别 &#xff1f; 视频封装…

Lua基本数据类型

Lua官网文档入口 http://www.lua.org/ document --> manual 一、基本数据类型 lua 中有八种基本数据型&#xff0c;分别是&#xff1a; nil&#xff0c;boolean&#xff0c;number&#xff0c;string&#xff0c;function&#xff0c;userdata&#xff0c;thread 和 tab…

vue - - - - - vue-property-decorator的使用

哪有小孩天天哭&#xff0c;哪有赌徒天天输 。遇到不会的技术、知识点&#xff0c;看得多了&#xff0c;掉的坑多了&#xff0c;也就会了。 vue-property-decorator的使用1. 单文件组件写法 - Component的使用2. 组件内使用变量3. 使用计算属性 - get的使用4. 生命周期5. metho…

Nydus 镜像扫描加速

文&#xff5c;余硕上海交通大学22届毕业生阿里云开发工程师从事云原生底层系统的开发和探索工作。本文 6369 字 阅读 16 分钟GitLink 编程夏令营是在 CCF 中国计算机学会指导下&#xff0c;由 CCF 开源发展委员会&#xff08;CCF ODC&#xff09;举办的面向全国高校学生的暑期…

Java字符集编码解码详细介绍

文章目录字符集字符集的基本认识字符集编码和解码字符集 字符集的基本认识 字符集基础知识 计算机底层不可以直接存储字符的。计算机中底层只能存储二进制(0、1) 二进制是可以转换成十进制的 计算机底层可以表示十进制编号。计算机可以给人类字符进行编号存储&#xff0c;这套…

【进阶C语言】数据的存储形式

文章目录一.数据类型分类二.整形的存储形式1.源码&#xff0c;反码&#xff0c;补码的关系内存中数据的存储——二进制源码&#xff0c;反码&#xff0c;补码的关系正数负数三.大小端1.概念2.例题&#xff1a;判断当前编译器的存储形式四.浮点数的存储形式1.二进制的补充&#…

【k8s系列】kube-state-metrics中kube_endpoint_address指标

文章目录背景环境操作方法1&#xff1a;kube_endpoint_address_not_ready选择大于0的验证方式1验证方式2方法2&#xff1a;kube_endpoint_address_available选小于0的方法3&#xff1a;kube_endpoint_address{ready"false"}选大于0的解释参考author: ningan123date: …

java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分+微序幕就此拉开之RocketM消息中间件~整起

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 RocketMQ一、RocketMQ概念~一览无余1.消息队列有啥用&#xff1f;能干啥&#xff1f;消息队列的应用场景&#xff1f;2.常见的消息队列有哪些&#xff1f;如何进行消息队列的…

2、MySQL支持的数据类型

目录 1、整数类型 &#xff08;1&#xff09;fillzero&#xff1a;根据整数类型的长度自动添加0 &#xff08;2&#xff09;unsigned&#xff1a;非负整数 &#xff08;3&#xff09;bin&#xff08;m&#xff09;&#xff1a;将十进制数转为m进制 2、日期时间类型 &#x…

【MySQL基础教程】函数的介绍与使用

前言 本文为 【MySQL基础教程】函数的介绍与使用 相关知识&#xff0c;下边具体将对字符串函数&#xff0c;数值函数&#xff0c;日期函数&#xff0c;流程函数等进行详尽介绍~ &#x1f4cc;博主主页&#xff1a;小新要变强 的主页 &#x1f449;Java全栈学习路线可参考&…

MAXHUB+腾讯会议:为未来办公造一部动力引擎

科技领域有个规律&#xff0c;我们经常高估一年的变化&#xff0c;而低估了十年或者更长时间所可能发生的变化。不信可以做个测试&#xff0c;你觉得未来线上办公会怎么发展&#xff1f;不少朋友会说&#xff0c;既然线上办公是疫情到来之后的PlanB&#xff0c;那么随着疫情结束…

【STM32F4系列】【HAL库】【自制库】ps2手柄模块驱动

外观和电气连接 外观 手柄外观如下 接收器外观 这是接收器和底座 电气连接 需要4根连接线 单片机输出是CLK DO CS 单片机输入是DI 电源电压是3.3-5v 注意模块和单片机共地 模块不支持高速,最大时钟周期约为4us左右 因此使用软件模拟时序的方式来与模块通信 只需要将模块的4根线…

Golang Context 的几种应用场景

Golang context主要用于定义超时取消&#xff0c;取消后续操作&#xff0c;在不同操作中传递值。本文通过简单易懂的示例进行说明。 超时取消 假设我们希望HTTP请求在给定时间内完成&#xff0c;超时自动取消。 首先定义超时上下文&#xff0c;设定时间返回取消函数&#xff…

Apache POI操作百万数据excel实战方案及JDK性能监控工具Jvisualvm实战

百万数据报表概述 文章目录**百万数据报表概述****1、** **概述****2、 JDK性能监控工具介绍****2.1、 Jvisualvm概述****2.2、 Jvisualvm的位置****2.3、 Jvisualvm的使用****3、** **解决方案分析****4**、**百万数据报表导出****4.1** **需求分析****4.2** **解决方案****4.…

玩转门店管理新方法,促进营收利润加倍

门店管理的好坏是门店是否可以运营下去的重要因素&#xff0c;决定了门店的存亡与兴衰。以往很多门店管理者为了更简单方便&#xff0c;采用的是传统方式进行管理。即运用手工的方式记录和计算门店的各种信息。但是随着门店规模的扩大、商品种类的丰富、客户需求的增加以及员工…

普惠微光汇聚暖阳,招联携手奋斗者筑梦前行

撰稿 | 多客 来源 | 贝多财经 近年来&#xff0c;受疫情反复带来的经济下行压力&#xff0c;收入减少生活难以保障成了社会一大难题。值此艰难时刻&#xff0c;一大批爱心企业出资出力&#xff0c;纷纷用实际行动诠释企业的使命和担当。口罩、防护服、矿泉水、食品、药物、免费…

vue配置webpack生产环境.env.production、测试环境.env.development(配置不同环境的打包访问地址)

vue-cli区分办法 vue配置生产环境.env.production、测试环境.env.development vue配置webpack生产环境、测试环境 在使用webpack创建完vue2项目的时候&#xff0c;为了解决生产打包、测试打包对应的全局变量不一致的问题。 首先看一下package.json的改动&#xff1a; "…

MARL算法系列(1):IQL【原理+代码实现】

原文题目&#xff1a;Multiagent cooperation and competition with deep reinforcement learning 作者&#xff1a;Tampuu, Ardi and Matiisen, Tambet and Kodelja, Dorian等 发表时间&#xff1a;2017年 主要内容&#xff1a;相互独立的两个DQN智能体&#xff0c;竞争任务下…

2022年威胁隐私和安全的数个“罪魁祸首”

随着互联网技术的不断发展&#xff0c;我们对网络的信任也在不断增加&#xff0c;甚至将自己的私人数据委托给各种在线平台&#xff0c;如个人数字身份信息、银行账户、各种机密信息。网络一方面的确带来变革型的进步&#xff0c;但另一方面&#xff0c;频频曝光的数据泄露事件…

VueJs中setup的使用(下)

前言在Vue当中,父组件想要向子组件传值,是通过在父组件标签上通过自定义属性实现的,而在子组件中是通过props进行接收在Vue2.0里面,在子组件中的选项式API配置项选项中props进行接收就可以了的,在子组件中的模板中可以直接使用但在Vue3里面与Vue2.0存在一些差异,这个主要是针对…