LeetCode简单题之错误的集合

news/2024/12/12 5:55:51/

题目

集合 s 包含从 1 到 n 的整数。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合 丢失了一个数字 并且 有一个数字重复 。
给定一个数组 nums 代表了集合 S 发生错误后的结果。
请你找出重复出现的整数,再找到丢失的整数,将它们以数组的形式返回。
示例 1:
输入:nums = [1,2,2,4]
输出:[2,3]
示例 2:
输入:nums = [1,1]
输出:[1,2]
提示:
2 <= nums.length <= 10^4
1 <= nums[i] <= 10^4
来源:力扣(LeetCode)

解题思路

  分析题目:如果有重复的数字那么它的频率一定为2,如果有缺失的数字那么它的频率一定为0。我们可以从统计频率的角度来解决此问题。建立字典统计列表种各个数字的频率,然后在1~n中逐个以序列数为关键字访问字典,如果频率为2那么它就是重复的数字,如果访问不到那么它就是缺失的数字。

class Solution:def findErrorNums(self, nums: List[int]) -> List[int]:d={}for i in nums:d[i]=d.get(i,0)+1for i in range(1,len(nums)+1):try:if d[i]==2:temp1=i  #记录重复的数字except:temp2=i   #记录缺失的数字return [temp1,temp2]

在这里插入图片描述
  另外,这个题也可以通过排序来完成。设置两个指针访问相邻的两个元素差值是否等于2,如果等于2那么它们之间的那个数便是缺失的数字,如果两个元素相等那么这便是重复的数字,当然这种双指针的解决办法往往需要特殊的处理两个端点。

class Solution:def findErrorNums(self, nums: List[int]) -> List[int]:nums.sort()i=0j=1if nums[0]!=1:temp2=1if nums[-1]!=len(nums):temp2=len(nums)while j<len(nums):if nums[j]-nums[i]==2:temp2=nums[i]+1if nums[j]==nums[i]:temp1=nums[i]i+=1j+=1return [temp1,temp2]

在这里插入图片描述


http://www.ppmy.cn/news/606264.html

相关文章

短视频技术与市场动态

短视频技术与市场动态 今日头条是一个通用信息平台&#xff0c;致力于连接人与信息&#xff0c;让优质丰富的信息得到高效精准的分发&#xff0c;帮助用户看见更大的世界。 今日头条目前拥有推荐引擎、搜索引擎、关注订阅和内容运营等多种分发方式&#xff0c;囊括图文、视频、…

并发-操作系统底层工作的整体认识

冯诺依曼计算机模型 五大模块&#xff1a;输入、输出、计算器【cpu】、存储器【内存】、控制器 现在计算机硬件结构设计 CPU&#xff1a;控制、运算、数据

LeetCode简单题之图片平滑器

题目 包含整数的二维矩阵 M 表示一个图片的灰度。你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) &#xff0c;平均灰度的计算是周围的8个单元和它本身的值求平均&#xff0c;如果周围的单元格不足八个&#xff0c;则尽可能多的利用它们。 示例 1: 输入: […

EDA技术与动态

EDA技术与动态 电子设计自动化&#xff08;英语&#xff1a;Electronic design automation&#xff0c;缩写&#xff1a;EDA&#xff09;是指利用计算机辅助设计&#xff08;CAD&#xff09;软件&#xff0c;来完成超大规模集成电路&#xff08;VLSI&#xff09;芯片的功能设计…

谷歌BERT预训练源码解析(一):训练数据生成

目录 预训练源码结构简介 输入输出 源码解析 参数 主函数 创建训练实例 下一句预测&实例生成 随机遮蔽 输出 结果一览 预训练源码结构简介 关于BERT&#xff0c;简单来说&#xff0c;它是一个基于Transformer架构&#xff0c;结合遮蔽词预测和上下句识别的预训练NLP模型。至…

LeetCode刷题:栈和队列的相关题目

前言1.用栈来实现队列1.1思路1.2图示1.3代码2.用队列来实现栈2.2思路2.2代码3.最小栈3.1思路3.2图示3.3代码4.删除字符串中所有相邻重复项4.1思路4.2代码前言 大家如果对于队列的性质等不太了解的话&#xff0c;我推荐一篇博客&#xff0c;写得很细节&#xff0c;大家可以去看看…

LeetCode简单题之机器人能否返回原点

题目 在二维平面上&#xff0c;有一个机器人从原点 (0, 0) 开始。给出它的移动顺序&#xff0c;判断这个机器人在完成移动后是否在 (0, 0) 处结束。 移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动作有 R&#xff08;右&#xff09;&#xff0c;L&…

谷歌BERT预训练源码解析(三):训练过程

目录 前言 源码解析 主函数 自定义模型 遮蔽词预测 下一句预测 规范化数据集 前言 本部分介绍BERT训练过程&#xff0c;BERT模型训练过程是在自己的TPU上进行的&#xff0c;这部分我没做过研究所以不做深入探讨。BERT针对两个任务同时训练。1.下一句预测。2.遮蔽词识别 下面介绍…