寻找[0, n] 消失的一个元素

Android开发Intent详解 本文详解Android开发Intent。 阅读详情

本篇博客的知识体系来自labuladong的汇总,对其精妙的方法极为惊叹,特此记录一下,如需查看原文请点击labuladong。

题目:给定一个包含0,1,2,3…,n中的n个序列,找出0…n中没有出现在序列中的那个数。

方法一:排序 O(nlogn)+O(1)

采用排序的方法,然后遍历一遍找到缺失的数字。该方法的时间复杂度为O(n),空间复杂度为O(1)。

方法二:数组方法 O(n)+O(n)

另外开辟数组,如果这个数组出现过,标记一下,找到没有标记的数字。该方法的时间复杂度O(n),空间复杂度为O(n),典型的空间换时间的复杂度。

方法三:位运算 O(n)+O(1)

在我们学习异或运算,相同数字的两个数字异或为0,那么我们异或[0, n]的数据,再异或需要求出[0, n]缺失数据的数组,异或的过程中会出现两个一样的数据相互抵消,最终只剩下缺失值。
代码源自 labuladong

int missingNumber(int[] nums) {
    int n = nums.length;
    int res = 0;
    // 先和新补的索引异或一下
    res ^= n;
    // 和其他的元素、索引做异或
    for (int i = 0; i < n; i++)
        res ^= i ^ nums[i];
    return res;
}

方法四:等差数列 O(n)+O(1)

这个方法很容易忽略,我们利用等差公式求出等差数列前n项和,然后减去给出缺失值的数组中的数据和,就是我们要的缺失值。但是该方法涉及乘法可能导致数据溢出,所以我们就需要优化该方法。
代码源自labuladong

int missingNumber(int[] nums) {
    int n = nums.length;
    // 公式:(首项 + 末项) * 项数 / 2
    int expect = (0 + n) * (n + 1) / 2;

    int sum = 0;
    for (int x : nums) 
        sum += x;
    return expect - sum;
}

优化:

我们在遍历的时候一边求和一边减算,具体实现方法请看代码。
代码源自labuladong

public int missingNumber(int[] nums) {
    int n = nums.length;
    int res = 0;
    // 新补的索引
    res += n - 0;
    // 剩下索引和元素的差加起来
    for (int i = 0; i < n; i++) 
        res += i - nums[i];
    return res;
}
【Bug已解决】Claude Code Auto-update failed 自动更新失败的解决方案 方案适用场景推荐指数清理残留重新安装已经损坏,需要快速恢复可用⭐⭐⭐⭐⭐修复目录权限权限不足导致更新反复失败⭐⭐⭐⭐⭐关闭自动更新网络/安全软件环境不稳定⭐⭐⭐切换原生安装方式想从根源规避 npm 更新问题⭐⭐⭐⭐自检修复脚本团队/服务器环境需要自动化恢复⭐⭐⭐报错的本质是自动更新过程中的文件替换操作因权限不足或被中断而处于不完整状态,而不是 Claude Code 本身的功能缺陷。遇到问题先清理残留文件再重新安装,不要在损坏状态上反复尝试修复; 阅读详情

相关推荐

RDMA性能调优实战:如何用ib_*命令榨干你的Mellanox网卡带宽?

本文深入探讨了如何利用ib_*命令工具集对RDMA网络进行深度性能调优,以充分释放Mellanox网卡的带宽潜力。文章从理解Send/Write/Read三种核心通信原语的差异入手,逐步指导读者通过调整消息大小、队列深度、内联数据等关键参数,并结合系统级的NUMA绑定、中断亲和性等优化策略,实现从基准测试到逼近硬件极限的性能提升。

weixin_29306011的博客 87

LeetCode 268 ----- 缺失数字

LeetCode 268 ----- 缺失数字 题目描述 给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。 思路 位运算(异或) 对一个数进行两次完全相同的异或运算会得到原来的数 本题中,将数组下标与数组元素,和数组长度同时异或,就会得到缺失的数 实现 import java.util.Arrays; /** * Author: li...

lsy18392609095的博客 288

合成生物学中试:花钱只是开始,烧钱才是常态

2026年合成生物学行业面临严峻产业化挑战:多家企业终止发酵项目或延期投产,显示从实验室到工厂的转化困境。核心问题并非基因合成成本,而是工艺放大难题——67%项目在中试阶段因工艺问题失败。AI辅助无法替代工程经验,菌株-配方-工艺的三元适配需要长期数据积累。中试成本惊人,涉及设备折旧、原料消耗和稀缺工艺人才,而行业普遍回避讨论这些工程现实,导致认知偏差。建议创业者提前布局中试,将其视为核心竞争力而非简单成本项。合成生物学的真正瓶颈在于工程化能力,这需要时间沉淀而非技术叙事。

AIexander的博客 942

leetcode-268. 缺失数字,难度:简单 && leetcode-136. 只出现一次的数字,难度:简单

目录268题目思路代码结果联想136题目思路代码复盘思路代码结果 268 题目 给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例 2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? 思路 因为数组中必有一数缺失,那么我们可以先找出数组中的最大值(用于界定完整序列的范围),再分别求出完整序列和与数组数字和,相减即

技术宇宙 475

【LDLTS解析】从重叠峰到精准参数:拉普拉斯深能级瞬态光谱如何重塑半导体缺陷分析

本文深入解析了拉普拉斯深能级瞬态光谱(LDLTS)技术如何革新半导体缺陷分析。针对传统DLTS难以分辨重叠峰的痛点,LDLTS通过拉普拉斯逆变换对高精度电容瞬态曲线进行数学解卷积,成功分离发射率相近的缺陷信号,实现从模糊宽峰到精准独立峰的转变。该技术不仅大幅提升了缺陷激活能和捕获截面等关键参数的提取精度,更推动分析范式从经验拟合转向第一性原理,为先进半导体工艺开发与良率提升提供了强大的精准诊断工具。

weixin_29224309的博客 273

ArcGIS小白必看:如何用3D Analyst工具将二维点线秒变三维模型(附详细步骤)

本文为ArcGIS初学者提供了利用3D Analyst工具将二维点、线数据快速转换为三维模型的完整指南。详细讲解了基于属性字段和数字高程模型(DEM)两种核心方法,并附上从数据准备、工具操作到三维场景可视化与问题排查的详细步骤,帮助用户轻松实现从平面到立体的空间数据建模。

nft7creator的博客 140

给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。

寻找缺失的数 标签: 数组   http://blog.youkuaiyun.com/guoziqing506/article/details/51436082 2016-05-17 15:03 160人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: lintcode(167) 作者同类文章X 版

mmbbz的专栏 3335

从“能跑”到“好用”:一名 Python 开发者的工程化进阶之路【Python心得篇】

Python 早已不只是写脚本、跑数据的工具。后端服务AI Agent 编排层自动化平台核心语言数据与业务之间的“中枢层”区别只在于:你是用脚本方式,还是工程方式在写。如果你已经能写“能跑的 Python”,下一步,就是让它长期可跑、稳定可演进。Python 的真正价值不在于“写得快”,而在于能否支撑持续演进的工程实践。当代码从一次性脚本走向长期运行的系统,开发者必须从结构设计、职责拆分、性能意识和类型约束等方面进行系统性思考。

博客 1546

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。时间复杂度O(n)

数组nums包含从0到n的所有整数,但其中缺了一个。请编写代码找出那个缺失的整数。时间复杂度O(n) 由于时间复杂度要求为O(n),采取异或的做法。 举例说明: 数组{1,0,3},缺失数字是2. 用二级制的方法表示出这几个数字,这里只看后4位置即可: 1:0001 0:0000 3:0011 定义0-n的数字组成一个数组num 两个相同的数字异或为0(不需要考虑顺序),那么nums数组所有的数和num数组所有数异或之后,相同的约掉,剩下的数字就是我们要找的数。 代码如下: #include<stdi

成功的方式只有一个,按自己的方式,度过人生。欢迎共赴知识与乐趣的探索之旅! 2845

浏览器主页被2345劫持简单处理方法

本人比较常用的浏览器是IE和Chrome IE: 将网址修改为https://www.baidu.com 应用-确定-重新打开IE浏览器 或者win+r运行regedit打开注册表找到这个值   HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main下  和HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main这个下面的StartPage ...

A soul tortured by desire 2万+

Cadence OrCAD Capture CIS元器件管理时ERROR(ORCIS-6454): Temporary part number tracking is turned on报错的解决方法

使用Part manager对工程的元器件进行批量管理时,出现如下图所示的ERROR(ORCIS-6454): Temporary part number tracking is turned on报错其解决方法如下。

fydar的博客 3499

【LeetCode】数组nums包含从0到n的所有整数,但其中缺了一个,请找出那个缺失的整数(面试题 17.04. 消失的数字)| 数组

文章目录@[TOC]1、题目描述:2、解题方法:解法1:解法2:解法3: 1、题目描述: LeetCode链接:https://leetcode-cn.com/problems/missing-number-lcci/ 2、解题方法: 对于此道题,我们有哪些解题思路呢?先不管其事件复杂度是否符合题目的要求,我们先分析思路。 解法1: 先将数组中的数由小到大排序,再遍历排序后的结果,如果遍历下标和该下标对应的元素不相等,则返回该下标,如果遍历结束仍然没有符合条件,说明是最后一个数字 n 缺失了,则.

codewinter的博客 1920

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

经典题目——消失的数字

消失的数字

qq_73156831的博客 248

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

如何寻找消失的元素

文章目录 给⼀个⻓度为 n 的数组,其索引应该在 [0,n) ,但是现在你要装进去 n + 1个元素 [0,n] ,那么肯定有⼀个元素装不下嘛,请你找出这个缺失的元素。 方法一 把这个数组排个序,然后遍历⼀遍。排序解法的时间复杂度是 O(NlogN) 方法二 借助数据结构的特性,⽤⼀个 HashSet 把数组⾥出现的数字都储存下来,再遍历 [0,n] 之间的数字,去 HashSet ...

Ellie棒棒哒的博客 449

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

如何在freemarker寻找元素_如何寻找消失的元素

读完本文,你可以去力扣拿下如下题目:448.找到所有数组中消失的数字-----------之前也有文章写过几个有趣的智力题,今天再聊一道巧妙的题目。题目非常简单:给一个长度为 n 的数组,其索引应该在 [0,n),但是现在你要装进去 n + 1 个元素 [0,n],那么肯定有一个元素装不下嘛,请你找出这个缺失的元素。这道题不难的,我们应该很容易想到,把这个数组排个序,然后遍历一遍,不就很容易找到缺...

weixin_39650784的博客 163

数组之寻找消失的元素

给定一个包含0,1,2,3,…,n中n个数的序列,找出0, …, n中没有出现在序列中的那个数。 解析: 给⼀个⻓度为 n 的数组, 其索引应该在 [0,n) , 但是现在你要装进去 n + 1 个元素 [0,n] , 那么肯定有⼀个元素装不下嘛, 请你找出这个缺失的元素 方法一: 把这个数组排个序, 然后遍历⼀遍,不就很容易找到缺失的那个元素了吗? 时间复杂度是 O(NlogN) 方法二: 借助数据结构的特性, ⽤⼀个 HashSet 把数组⾥出现的数字都储存下来, 再遍历 [0,n] 之间的数字, 去

AndyJ的学习之旅 583

寻找数组中消失或重复的数字方法归纳

前言 在力扣网连续写了几道寻找数组中消失数字以及重复数字的题,发现有一些解法真是过于精妙,那就记录一波咯~~~~废话不多说开始吧! 剑指 Offer 03. 数组中重复的数字 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 力扣原题传送门 1、哈希表法 使用哈希表记录出现过的数字,一边遍历数组一边查询此数是否存在于哈希表中 class Solu

nepu_bin的博客 586

寻找数组中的缺失元素

题目来源: 点击打开链接 问题描述: Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that

玦尘的自说自话 1207

【排序+寻找消失元素】LeetCode 448. Find All Numbers Disappeared in an Array

文章目录题目描述知识点结果实现码前思考代码实现码后反思 题目描述 知识点 数组 结果 实现 码前思考 我的思路是排序。设置一个指针,从左到右遍历,让每个元素归位; 遍历完之后,如果出现不匹配的位置,那么代表缺失。 代码实现 class Solution { public: vector<int> findDisappearedNumbers(vector<int>& nums) { int pos=0;//当前要移动的位置 .

yc_cy1999的博客 257

448. 找到所有数组中消失的数字

文章目录题目描述题解 题目描述 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。 找到所有在 [1, n] 范围之间没有出现在数组中的数字。 您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [5,6] 来源:力扣(LeetCode) 链接:溯源 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出

qq_41684786的博客 165

找到所有数组中消失的数字_代码题(24)— 寻找重复数、数组中重复的数据、找到所有数组中消失的数字...

1、287.寻找重复数给定一个包含n+ 1 个整数的数组nums,其数字都在 1 到n之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的O(1) 的空间。时间复杂度小于O(n2) 。数...

weixin_39611937的博客 113

leetcode 448 寻找消失的数

给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入: [4,3,2,7,8,2,3,1] 输出: [5,6]思路:问题在于不使用额外空间且时间复...

sss__c的博客 301

[leetcode]找到所有数组中消失的数字[javascript]

2019年2月11日 找到所有数组中消失的数字 https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array/ 描述 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不...

迷途之家 691

数组中消失的数字

题目:给定一个数组,数组中的每一个元素都在 1 - n 之间,其中 n 等于数组长度.部分元素会出现两次,其余元素都出现一次,要求找出 1 - n 之间找到没有出现在数组中的数字.(不使用额外空间,并且保证时间复杂度O(N),假设返回的数组不算使用额外空间). class Solution { public void swap(int[] array, int x, int y) { ...

weixin_44058932的博客 210

复习算法 寻找数组中重复元素这种类型题目(原地标记法)

很明显, nums.size()=n 并且里面的每个数字在 0~n-1 之间,将每个没有归位的元素归位,如果发现待归位元素的待交换的位置是存的相同的值,也就是重复了。每次将元素归位,时间复杂度是o(n) (for中虽有while循环,但是代码运行时,while并不是每次都执行,最多执行的总次数是o(n).)将元素归位时间复杂度是o(n)(for中虽有while循环,但是代码运行时,while并不是每次都执行,最多执行的总次数是o(n).)这题和上一题基本一样,这题将所有的重复元素算出,

qq_23923713的博客 411

1.寻找消失的数字 2.寻找没有重复出现的数字

1.寻找消失的数字要求:有一组数据0到n的数字,但其中少了一个数字要求写一个程序找出这个数字并且时间复杂度为o(n)比如:0,1,2,3,4,5,7,8,9这组数据缺少了一个6,要求我们设计个程序把它找出来。思路:因为限制了时间复杂度且题目与数字相关,因此我们可以想到位操作符,我们知道0与任何数异或都是任何数,如果我们用0与缺失数字的那个数组异或一遍,再用得到的值与没有缺失的异或一遍那我们得到的就是那个缺失的值。代码实现: 2.寻找没有重复出现的数字要求:在一组数据中,其他数都出现了2次但只有2个数只出

m0_67770043的博客 476
上一篇: 最全排序代码整理
下一篇: codeforces div2 Row GCD
Re:fused
博客等级 码龄9年 474粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值