Hot100:缺失的第一个正数(First Missing Positive)原地索引定位 ACERS 解析

副标题 / 摘要 缺失的第一个正数是经典的“原地哈希/索引定位”题:把值放回它应该在的位置,再线性扫描即可找到答案。本文按 ACERS 拆解思路、工程应用与多语言实现。 预计阅读时长:12~15 分钟 标签:Hot100、数组、原地哈希 SEO 关键词:First Missing Positive, 缺失的第一个正数, 原地哈希, 索引映射, O(n) 元描述:O(n) 时间、O(1) 额外空间的原地索引定位解法,含工程场景与多语言代码。 目标读者 正在刷 Hot100 的学习者 想掌握“原地索引定位”模板的中级开发者 需要在原数组内做高效重排与定位的工程师 背景 / 动机 “找最小缺失正数”本质是一个定位问题: 如果能把值 x 放在索引 x-1 上,那么答案就是第一个不匹配的位置。 题目还要求 O(n) 时间和 O(1) 额外空间,逼迫我们放弃排序与哈希表, 转而使用原地置换的技巧。 核心概念 概念 含义 作用 原地哈希 用数组下标充当哈希桶 O(1) 额外空间 索引定位 值 x 应放到 x-1 构造可扫描的结构 置换交换 不断交换直到就位 线性时间完成 A — Algorithm(题目与算法) 题目还原 给你一个未排序的整数数组 nums,找出其中没有出现的最小正整数。 请实现 O(n) 时间复杂度并且只使用 常数级别额外空间的解决方案。 输入输出 名称 类型 描述 nums int[] 未排序整数数组 返回 int 最小缺失的正整数 示例 1(官方) 输入: nums = [1,2,0] 输出: 3 示例 2(官方) 输入: nums = [3,4,-1,1] 输出: 2 思路概览 对每个位置 i,把 nums[i] 放到它应该去的位置 nums[i]-1。 完成“就位”后,从左到右找到第一个 nums[i] != i+1 的位置。 该位置对应的正整数 i+1 即为答案;若全部匹配则答案为 n+1。 C — Concepts(核心思想) 关键模型 值 x 应该放在索引 x-1 方法归类 原地哈希(Index-as-Hash) 数组置换 / 位置归位 线性扫描验证 不变量 当置换结束时: 如果 nums[i] == i+1,说明正整数 i+1 存在; 第一个不匹配的 i,就是最小缺失正整数的位置。 ...

2026年1月24日 · 6 分钟 · map[name:Jeanphilo]