当前位置: 首页 > news >正文

可视化图解算法70:缺失的第一个正整数

1.题目

牛客网 面试笔刷 TOP101    |     LeetCode 41. 缺失的第一个正数

描述

给定一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数

进阶: 空间复杂度 O(1),时间复杂度 O(n)

数据范围:

-231<=nums[i]<=231-1

0<=len(nums)<=5x105

示例1

输入:

[1,0,2]

返回值:

3

示例2

输入:

[-2,3,4,1,5]

返回值:

2

示例3

输入:

[4,5,6,8,9]

返回值:

1

2. 题解思路

未排序的整数数组nums,需要找到缺失的第一个正整数,可以将数组中的内容添加到set中(主要考虑到set查询的速度优势),同时记录数组中的最大正整数n,之后从1到n遍历整数,对比遍历到的整数是否已经在set中。

具体思路是:

  1. 定义一个哈希表(set);

  2. 将数组中的值存储到set中,其中n为数组中最大的数;

  3. 从自然数1开始到n,到map中找,如果对应的自然数没有找到,直接返回;

  4. [1:n]都在map中,则返回 n + 1。

如果文字描述的不太清楚,你可以参考视频的详细讲解。

  • Python版本:https://www.bilibili.com/cheese/play/ep1374989
  • Java版本:https://www.bilibili.com/cheese/play/ep1368279
  • Golang版本:https://www.bilibili.com/cheese/play/ep1368663

3.编码实现

核心代码如下:

func firstMissingPositive(nums []int) int {//1.定义一个哈希表(set,用map实现set的功能)hashTable := make(map[int]struct{}, len(nums))n := 1 //数组中最大的数//2.将数组中的值存储到map中,key为:数组中的值,value:可以是任意值(没有实际意义),数组中的最大值为nfor _, v := range nums {hashTable[v] = struct{}{}if v > n {n = v}}//3.从自然数1开始到n,到map中找,如果对应的自然数没有找到,直接返回for i := 1; i <= n; i++ {if _, ok := hashTable[i]; !ok {return i}}//4. 1~n都在map中,则返回 n + 1return n + 1}

具体完整代码你可以参考下面视频的详细讲解。

  • Python版本:https://www.bilibili.com/cheese/play/ep1374989
  • Java版本:https://www.bilibili.com/cheese/play/ep1368279
  • Golang版本:https://www.bilibili.com/cheese/play/ep1368663

4.总结

本题的核心其实是统计在数组中未出现的第一个正整数,因此需要用map或者set,相比map来说用set更适合本题。将数组中的内容全部添加到set中,之后对整数1至n到set中查询,查看该整数是否存在。

分割线

《数据结构与算法》深度精讲课程正式上线啦!7 大核心算法模块全解析:

  ✅   链表

  ✅   二叉树

  ✅   二分查找、排序

  ✅   堆、栈、队列

  ✅   回溯算法

  ✅   哈希算法

  ✅   动态规划

无论你是备战笔试面试、提升代码效率,还是突破技术瓶颈,这套课程都将为你构建扎实的算法思维底座。🔥立即加入学习打卡,与千名开发者共同进阶!

  • Python编码实现:https://www.bilibili.com/cheese/play/ss897667807
  • Java编码实现:https://www.bilibili.com/cheese/play/ss161443488
  • Golang编码实现:https://www.bilibili.com/cheese/play/ss63997

对于LeetCode数据结构与算法,我们总结了一套【可视化+图解】方法,依据此方法来解决相关问题,算法变得易于理解,写出来的代码可读性高也不容易出错。具体也可以参考视频详细讲解。

今日佳句:人皆知有用之用,而莫知无用之用也。

http://www.rkmt.cn/news/63107.html

相关文章:

  • 金蝶ERP制造业行业实施专家榜:专精特新企业如何选择行业经验丰富的服务商?
  • 清理谷歌浏览器垃圾文件 Chrome “User Data” - 教程
  • 动态规划:不同的二叉搜索树
  • 金蝶ERP服务商实施能力新标准:哪家服务商能助力帮助上市企业实施过满足IPO审计系统搭建?
  • 2025年11月定制滑轨品牌推荐: 非标定制KVM重型座椅多节滑轨源头厂家精密工艺与市场认可度解析!
  • 【NCS随笔】NCS如何修改连接间隔
  • 2025 年上海影棚出租公司最新推荐榜,聚焦技术实力与市场口碑深度解析上海汽车摄影棚出租 / 上海汽车影棚出租有灯箱 / 上海汽车影棚出租有转盘 / 上海汽车影棚出租 / 上海直播影棚出租公司推荐
  • 算法竞赛备考冲刺必刷题(C++) | 洛谷 B3639 T2点亮灯笼 - 详解
  • 二进制漏洞扫描技术一览
  • 2025 年汽车摄影公司最新推荐榜,聚焦技术实力与市场口碑深度解析汽车广告拍摄/汽车拍摄活动策划/汽车摄影广告/汽车活动摄影/汽车发布会场地摄影/汽车摄影修图公司推荐
  • 泳池、温泉后必做?幻颜之约的“水环境”私护指南
  • 数组的重塑
  • 2025 年接触角测量仪厂家最新推荐榜,深度剖析品牌技术实力与市场口碑及产品适配性座滴法 / 动态 / 静态 / 全自动 / 水滴 / 高温 / 晶圆 / 便携式接触角测量仪公司推荐
  • mdns shell
  • 2025 年等离子设备厂家最新推荐榜,技术实力与市场口碑深度解析,助力企业精准选型表面处理 / 镀膜 / 封装处理 / 清洗 / 表面活化 / 表面改性设备 / 真空等离子清洗设备公司推荐
  • 音乐模式切换下一曲造成灯光异常问题
  • 【Linux】编辑器vim的使用和理解gcc编译器 - 详解
  • php 8.2 配置安装php-zbarcode扩展
  • 庸者谋事,智者谋局
  • 2025 年传感器厂家最新推荐排行榜:磁致伸缩 / 防爆 / 液位等多类型产品权威测评与实力解析线性 / 矿用 / 直线 / 油缸位移传感器 / 液位传感器公司推荐
  • 【相反数】暴力即可
  • synchronized(this) 用法详解
  • 项目写交付文档,数据库文档生成
  • NeurIPS 2025|让AI读懂第一视角的“内心独白”!浙大等联合突破性实现自我中心视频推理
  • 2025年燃气低氮热水锅炉加工厂权威推荐榜单:家庭燃气热水锅炉/立式卧式燃气热水锅炉/半吨燃气热水锅炉设备源头厂家精选
  • 08.入门篇-Java程序运行原理
  • 【水印检查】字符串处理和矩阵的存入
  • 从零部署网站客服系统:我踩过的域名和服务器坑,帮你省下几千块!
  • 微波烘干设备厂家技术实力与行业应用解析
  • 2025 年最新推荐激光切管机厂家排行榜:聚焦高效高精度设备,助力企业提升金属管材加工品质高速 / 高精度 / 零尾料 / 免画图 / 全自动 / 三卡盘激光切管机公司推荐