leetcode 41. 缺失的第一个正数

解题思路

对于一个长度为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