题目描述
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
提示:
你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。
解题思路
考虑到最后要输出的是正整数,并且不用考虑输入数组中是否有重复或者负数。
已知正整数的范围是1,2,3,..... N,且1是最小的正整数
所以如果输入数组中没有正整数1,输出一定是1;如果输入中有正常数1则可以从1开始按顺序进行判断,找出最小的不在输入数组中的正整数。
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
N = len(nums)
if not N:
return 1
# 考虑输入是按顺序排序的正整数[1,2,3]
# 其输出是长度N+1
# 如果输入数组中没有正整数1,
# 则直接输出 1
for i in range(1,N+1+1):
if i in nums:
continue
else:
return i