leetcode 268.Missing Number 详解 python3

LeetCode --- 268. Missing Number 解题报告 Given an array containingndistinct numbers taken from0, 1, 2, ..., n, find the one that is missing from the array. Example 1: Input: [3,0,1] Output: 2 Example 2: Input: [9,6,4,2,3,5,7,0,1] O... 阅读详情

一.问题描述

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.

Example 1:

Input: [3,0,1]
Output: 2

Example 2:

Input: [9,6,4,2,3,5,7,0,1]
Output: 8

Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?

二.解题思路

题目意思就是从0,1,...n这n+1个数中挑n个出来组成一个数组,找出漏掉的那一个。

注意一下题目的note, 使用常量空间。

如果没要求常量空间那很简单,就是做个hashmap,把0~n+1全部map False, 然后哪一个数出现就将dict[i]=True,

最后哪一个是False就说明缺了。

但是如果要求常量空间那这些方法显然不行。

方法1: 如果一个数没少,那么0~n这n+1个数的和是 (n*n+1)/2,现在少了一个数,这个数可以通过(n*n+1)/2和nums数组的和相减得到。

时间复杂度O(N), 空间复杂度O(1)。

方法2:

可以用异或操作来寻找。

我们知道数组值是从0~n,同时数组索引是从0~n-1。如果我们每次迭代异或它的值和索引值。

这道题可以转化成,在一个长度为2n+1的数组中,有n个元素出现两次,找那一个落单的。

假设是缺了第i个值,我们会异或 xor0 xor 1 ..xor i xor i+1...xor n xor 0 xor 1 xor 2 ....xor i-1 xor i+1 ...xor n

然后我们知道任意一个数被异或2次为0,即A xor A=0。最后会变成 0 xor i,求出结果。

方法3:

交换 swap

只需要让每个nums[i]=i,那么最后那个nums[i]!=i 就是遗失的那个数,

迭代每一个nums[i]通过下列交换让索引和值相匹配,直到nums[i]=i时停止。

每进行一次交换,会使得索引nums[i]处的值与索引相等(匹配,即nums[nums[i]]=nums[i]),并不是nums[i]与i匹配,注意一下。

详细见代码。

nums[nums[i]],nums[i]=nums[i],nums[nums[i]]

时间复杂度: O(n*n),空间复杂度O(1).

更多leetcode算法题解法: 专栏 leetcode算法从零到结束

三.源码

1.求和相减

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        return int((len(nums))*(len(nums)+1)/2)-sum(nums)

2.异或,想法来源于:https://leetcode.com/problems/missing-number/discuss/432654/268-Missing-Number-Py-All-in-One-By-Talse

    def missingNumber(self, nums: List[int]) -> int:
        xor = 0 ^ len(nums)
        for i, v in enumerate(nums):
            xor ^= i
            xor ^= v
        return xor

3.交换 想法来源于想法来源于:https://leetcode.com/problems/missing-number/discuss/432654/268-Missing-Number-Py-All-in-One-By-Talse  略改动

class Solution:
    def missingNumber(self, nums: List[int]) -> int:
        l = len(nums)
        for i in range(l):
        	#swap until you get the right value in current position
            while nums[i] != i and nums[i] < l: 
                # nums[i], nums[nums[i]] = nums[nums[i]], nums[i], will lead to list assignment out of range error
                nums[nums[i]],nums[i]=nums[i],nums[nums[i]]
        for i, v in enumerate(nums):
            if i != v: return i
        return l

 

逆向选择启示录:一个失败高频策略如何意外跑赢市场 本文探讨了高频交易中的逆向选择现象,揭示了一个失败的高频策略如何通过简化意外跑赢市场。通过加密货币市场的实证分析和蒙特卡洛模拟,研究发现低预测性的简单策略反而更具鲁棒性,有效规避了逆向选择风险。文章还提供了小币种做市策略的优化框架和实践建议,为量化交易者提供了宝贵洞见。 阅读详情

相关推荐

matlab/simulink saw谐振器仿真,基于Matlab的SAW模态耦合模型的仿真研究

第32卷 第 4 期Vol. 32 No. 4重 庆 理 工 大 学 学 报 (自然科学)Journal of Chongqing University of Technology( Natural Science)2 0 1 8年 4 月Apr. 2018doi : 10.3969/j . issn. 1674-8425(z). 2018.04.002本文引用格式 :李志鹏,马龙祥,孟旭,等•基...

weixin_36192634的博客 1386

LeetCode--Python解析【Missing Number】(268)

题目: 方法: class Solution: def missingNumber(self, nums): """ :type nums: List[int] :rtype: int """ a = len(nums) b = int(a*(a+1)/2) for n...

ZJRN1027的博客 409

C2000 ePWM与SDFM同步配置:从寄存器到Driverlib实战解析

在嵌入式实时控制系统中,脉宽调制(PWM)是实现电机驱动、数字电源等应用的核心技术,其信号质量和时序精度直接决定了系统性能。为实现精确控制,PWM信号常需与模数转换器(ADC)或Sigma-Delta滤波器(SDFM)的采样时刻严格同步,以消除开关噪声并获取准确的反馈信号。其技术原理在于通过硬件同步机制,将PWM的特定时间点(如周期中心)作为触发源,控制数据采集的启动时刻。这种硬件级同步能有效提升闭环控制的稳定性和动态响应速度,广泛应用于伺服驱动、变频器等高性能场景。本文聚焦于TI C2000系列微控制器,

weixin_33692284的博客 446

【LeetCode】287. Find the Duplicate Number 解题报告(Python & C++)

【LeetCode】287. Find the Duplicate Number 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/find-the-duplicate-number/description/ 题目描述: Given an array nums containing n + 1 integers...

负雪明烛 3864

地质建模师必备:用Petrel快速生成浅地层TST/TVT厚度图的5个关键步骤

本文详细解析了地质建模师如何利用Petrel平台,将二维浅地层SEG-Y数据高效转化为真实地层厚度图(TST)和真实垂直厚度图(TVT)。文章系统梳理了从数据规范化导入、坐标系统一、地质界面解释到厚度计算与成图的5个关键实战步骤,并强调了误差控制与工程应用,为海上风电等工程地质评估提供了完整解决方案。

weixin_29204205的博客 519

Autosar NvM配置-手动配置Nvblock及使用-基于ETAS软件

NVM作为存储协议栈中最顶层的模块,是必须要掌握的。目前项目基本使用MCU带的Dflash模块,使用Fee模拟eeprom。在项目前期阶段,应该充分讨论需要存储的内容,包括应用数据,诊断数据等,用以评估Dflash空间是否够用。本文基于ETAS软件介绍NVBlock配置生成NVM参数及使用。使用NVBlock配置生成,基本不用手写代码,还是比较方便的。对于Nv block的划分,建议将同时写的一类数据放到一个block中,因为block除了data以外,Fee还会增加一些header数据,占用不少内存。

赞的博客 1885

LEETCODE-刷题个人笔记 Python(1-400)

1.Two Sum 给定一个整型数组,找出能相加起来等于一个特定目标数字的两个数。 思路:建立一个字典,存储结果,然后在字典里面找 dict = {} for i in range(len(nums)): complement = target - nums[i] if (dict.get(complement)!...

jamexfx的博客 4342

IDC 数据中心工程师面试题汇总

(适用于:IDC运维、机房值班、机房工程师、机柜运维、IDC基础设施、IDC网络运维岗)

老韩的Linux云计算架构师进阶之路 1083

解决:python3类定义写法,(self, nums: List[int]) -> int:

class Solution: def arrayPairSum(self, nums: List[int]) -> int: return sum(sorted(nums)[0::2]) 这段代码是LeetCode上的,我没有接触过这种定义写法。 这是新增的语法,为了说明参数和返回值的数据类型。不过仅仅的给人看的,实际上程序并不检查是否是相符的。 故意写错了,一样可以正常运行。 def fun(x: int) -> str: return [x] >&

ZYYRWish_97的博客 2万+

40、5G NR射频要求解析

本文详细解析了5G NR射频相关要求,包括参考灵敏度与动态范围的定义、接收机对干扰信号的抗扰性要求(如阻塞、邻道选择性等)、辐射射频要求在FR1和FR2频段的差异,以及多标准无线电基站(MSR)的发展及其对射频要求的影响。内容涵盖测试模型、干扰场景、具体指标和实现挑战,为理解和应用5G NR射频规范提供了全面指导。

qsc901234的博客 245

【算能】TPU(张量处理单元)的深度解析

算能(SOPHGO)作为国产AI芯片领域的核心企业,其TPU(张量处理单元)以高能效比与全场景覆盖能力为核心竞争力,专注于边缘计算与行业垂直领域的AI推理加速。

浩瀚之水的专栏 1549

leetcode求和

class Solution(object):     def threeSum(self, nums):         """         :type nums: List[int]         :rtype: List[List[int]]         """         target=0         def findNsum(nums, target, N

源式羽语 619

手把手教你学simulink(83.2)--分布式能源场景实例:使用Simulink构建一个典型的光伏发电分布式能源系统模型

*分布式能源系统(Distributed Energy System, DES)**是指由多个小型发电单元、储能装置和负载组成的电力系统,这些组件通常分布在不同的地理位置。DES包括太阳能光伏(PV)、风力发电、微型燃气轮机、储能电池等。这种系统能够提高能源利用效率、减少传输损耗,并增强电网的稳定性和可靠性。在DES中,各组件之间的协调与控制至关重要。通过使用Simulink,我们可以模拟和优化这些系统的运行情况,研究其动态行为,并设计有效的控制策略。

MHD0815的博客 1104

光伏逆变器网络监控模块GJ02PL:从数据采集到运维实战

光伏逆变器监控是分布式电站运维的核心环节,通过Modbus协议采集逆变器运行数据,结合网络监控模块实现云端或本地平台的数据传输与告警。GJ02PL作为专用数据采集终端,解决了多品牌逆变器统一接入的难题,支持RS485、4G/以太网通信,并具备本地缓存与断点续传能力。在光伏逆变器simulink仿真辅助下,可验证数据合理性,提升故障排查效率。该方案广泛应用于工商业屋顶及偏远电站,实现从被动抢修到预防性维护的转变,有效降低发电损失。

weixin_34268579的博客 464

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

leetcode 268: Missing Number

Missing Number Total Accepted: 10033 Total Submissions: 31720 Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. For e

西施豆腐渣 2957

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode 268. Missing Number--Python解法--数学题

LeetCode 268. Missing Number–Python解法–数学题 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大部分题目C++,Python,Java的解法都有。 题目地址:Missing Number - LeetCode Given an array containing n distinct numb...

个人博客 574

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

leetcode【268 Missing Number】【Python】

给出从0到n的n+1个数字中的n个数,找到缺失的那个数字。第一想法就遍历就可以了,但是注意不要被它给的例子所迷惑,数组不一定是排好序的,所以需要先排序。class Solution(object): def missingNumber(self, nums): """ :type nums: List[int] :rtype: int

u014251967的博客 2818

【Leetcode】268 Missing Number

题目描述 题目含义是,假设有一个长度为n+1的数组(其取值为[0,1,2,...,n]),随机拿掉一个数,使之变为长为n的array,打乱顺序问拿掉的数是几? time:O(nlogn);space:O(1)time:O(nlogn);space:O(1)time:O(nlogn);space:O(1) 想法是如果先排序,那么遍历的时候会很容易判断前后两个数是否差值为1。这个好像能补上上...

Ray 303

LeetCode 268.Missing Number

LeetCode 268.Missing NumberDescription: Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array. Example 1: Input: [3,0,1] Output: 2 Ex

My Blog 179

268. Missing Number

268. Missing Number题目我的代码优秀代码: 题目 Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array. 我的代码 对列表排序后,进行 class Solution: def missingNumb...

xiabenshu的博客 100

LeetCode 268. 丢失的数字 【Missing Number】

       互联网行业的小白,写博客的目的是为了记录自己的学习过程、对自己学习中所犯的错误做一个总结。由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教! python题解问题描述题解 问题描述 题目传送门:丢失的数字 给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 进阶: 你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题? .

鸪鹑菌的个人博客 545

2018.03.15 leetcode 打卡 #268. Missing Number

!!!leetcode第一次Accepted!!! 虽然感觉这句话暴露自己的智商,但是没办法,就是比较笨了~~~ 虽然超级简单!几个简单的if语句搞定,还是阻挡不住我看到Accepted时的开心啊~ 有第一次绿色 就有不断的绿灯 哈哈哈哈 #268.Missing Number 题目 :Given an array containingndistinct numbers taken...

Amy_mm的博客 274

Leetcode Missing Number Python 如何找出数组中缺少的值,异或方法。

leetcode 268题 Missing Number Given an array containing n distinct numbers taken from 0, 1, 2, …, n, find the one that is missing from the array. Example 1: Input: [3,0,1] Output: 2 Example 2: Input: [9,6,4,2,3,5,7,0,1] Output: 8 Note: Your algorithm sh

润泽的博客 297

LeetCode-Python-268. 缺失数字

给定一个包含 0, 1, 2, ..., n中n个数的序列,找出 0 .. n中没有出现在序列中的那个数。 示例 1: 输入: [3,0,1] 输出: 2 示例2: 输入: [9,6,4,2,3,5,7,0,1] 输出: 8 说明: 你的算法应具有线性时间复杂度。你能否仅使用额外常数空间来实现? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com...

Keep Coding 692

Leetcode 268. Missing Number (Python)

Given an arraynumscontainingndistinct numbers in the range[0, n], returnthe only number in the range that is missing from the array. Example 1: Input: nums = [3,0,1] Output: 2 Explanation: n = 3 since there are 3 numbers, so all numbers are in t...

weixin_58080442的博客 270

[LeetCode]268. Missing Number ★

每天一道编程题题目描述样例python解法C语言解法 题目描述 题目大意: 样例 python解法 class Solution: def missingNumber(self, nums: List[int]) -> int: req_sum = len(nums)*(len(nums)+1)/2 act_sum = sum(nums) ...

xingyu97的博客 166
上一篇: leetcode 1260. Shift 2D Grid 详解 python3
下一篇: leetcode 118. Pascal's Triangle 详解 python3
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值