缺失的第一个正数

🎯 问题描述(来源于LeetCode)

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

💻 代码实现

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
l=len(nums)
for i in range(l):
while 1<=nums[i]<=l and nums[i]!=nums[nums[i]-1]:
j=nums[i]-1
nums[j],nums[i]=nums[i],nums[j]
for i in range(l):
if nums[i]!=i+1:
return i+1
return l+1

📊 性能分析

提交结果

  • 运行时间:47ms击败70.21%
  • 内存消耗:28.34MB击败59.12%
  • 时间复杂度:O(n)O(n)
  • 空间复杂度:O(1)O(1)