当前位置: 首页 > 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://icebutterfly214.com/news/71223/

相关文章:

  • 数组的拼接
  • 洛谷 P3386:【模板】二分图最大匹配 ← 匈牙利算法
  • NeurIPS 2025|让AI读懂第一视角的“内心独白”!浙大等联合突破性实现自我中心视频推理
  • 实验5 MapReduce初级编程实践
  • 2025年抗气爆O形圈厂家权威推荐榜单:橡胶扶正器/V3级胶筒/震击器源头厂家精选
  • [H3C/华三]Super VLAN技术简述与配置
  • 留学中介机构排名TOP10新鲜出炉,这家值得选择
  • 2025知名的成都制冷设备厂家最新TOP排行榜
  • 实测有效!有抗衰效果的口服产品,30+内调抗衰宝藏清单
  • 2025年花都人气湘菜馆TOP5推荐,花都菜品好的湘菜馆与旅
  • 2025年中国深海环境模拟装备公司TOP5推荐:卡普蒂姆的发
  • 关于XSS和CSRF,面试官更喜欢这样的回答!
  • 口碑佳的深海环境模拟试验装置制造商TOP5推荐:售后完善选择
  • 主题:训练循环定制化实战:以CustomTrainer.fit为例
  • 2025年无人机反制模块制造企业权威推荐榜单:无人机探测设备‌/无人机侦测反制设备 ‌/无人机反制设备源头厂家精选
  • 点阵液晶屏驱动LCD显示驱动芯片-VK0256C 液晶显示驱动原厂【FAE技术支持】
  • 二、使用Spring AI实现基于sse协议的MCP Server
  • 家长必看!2025-2026申请季A-Level全日制机构排名(6 家头部详解+三大梯队)
  • 体育赛事赋能创新 亚运奥运多维突破
  • 2025 年 11 月电线电缆租赁厂家实力推荐榜:专业电缆线出租,临时用电电缆,电力电缆,空调电缆租赁服务,高效安全与灵活解决方案之选
  • 借助 GitHub Workflow 定时获取博客状态
  • 2025上海口碑好的留学机构
  • es 删除回复
  • 算一个bbox和一个mask区域的重叠 - Sanny.Liu
  • 中国口碑最好的生发品牌黑奥秘:19 年深耕,四大理疗 + 加盟赋能双驱动
  • TikTok广告开户投放服务商TOP7实力榜单发布
  • 2025年五大靠谱纸桶包装设备制造商推荐,专业纸桶包装设备厂
  • .Net中WebApiController如何实现多版本兼容?
  • Git 安装流程
  • 2025年修补防水涂料推荐厂家及其市场分析