题目
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
示例 1:
输入:nums = [1,2,0]
输出:3
示例 2:
输入:nums = [3,4,-1,1]
输出:2
示例 3:
输入:nums = [7,8,9,11,12]
输出:1
答案
要解决这个问题,我们可以使用一种称为 “桶排序” 的算法,但稍作修改以适应我们的需求。桶排序通常用于对一个范围内的数字进行排序,但在这里,我们只关心最小的正整数,因此我们可以将桶的数量减少到只有一个。
解题思路:
- 遍历数组,将所有的负数、零和小于等于当前最大正数的正数都替换为最大正数+1。这样做的目的是确保所有剩余的数字都是正整数且没有重复。
- 遍历完成后,当前的最大正整数就是结果。
代码实现:
def firstMissingPositive(nums):
if <