缺失的第一个正数
目录
41. 缺失的第一个正数 - 力扣(LeetCode) 空间复杂度o(n)很好想,但o(1)不好想,还是个408考研真题
注意O(n) == O(2n),即相较于边遍历边判断,还是遍历两次更加方便且不会有太多损失。类似思想:73. 矩阵置零 - 力扣(LeetCode)
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
# 将原数组当作哈希表使用。
for i, num in enumerate(nums):
if num <= 0: # 先把小于0的先一步处理,以便于使用标记
= len(nums) + 1
nums[i]
for i, num in enumerate(nums):
= abs(num)
num
if num >= 1 and num <= len(nums):
if nums[num-1] > 0: # 不重复添加
-1] = -nums[num-1]
nums[num
= len(nums) + 1
res
for i, num in enumerate(nums):
if num > 0:
= i + 1
res
break
return res