解题思路
对于一个长度为N的数组,缺失的第一个正数在[1, N+1]中(若[1,N]在数组都出现了,那么答案是N+1),否则答案是[1,N]中没有出现的最小正数
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| class Solution: def firstMissingPositive(self, nums: List[int]) -> int: nums_len = len(nums)
for i, num in enumerate(nums): if num <= 0: nums[i] = nums_len + 1 for num in nums: num = abs(num) if num <= nums_len: nums[num-1] = -abs(nums[num-1])
for i, num in enumerate(nums): if num > 0: return i + 1
return nums_len + 1
|