题目

image.png

思路

参考剑指offer
语雀内容

代码

  1. class Solution:
  2. def firstMissingPositive(self, nums: List[int]) -> int:
  3. size = len(nums)
  4. for i in range(size):
  5. # 先判断这个数字是不是索引,然后判断这个数字是不是放在了正确的地方
  6. while 1 <= nums[i] <= size and nums[i] != nums[nums[i] - 1]:
  7. self.__swap(nums, i, nums[i] - 1)
  8. for i in range(size):
  9. if i + 1 != nums[i]:
  10. return i + 1
  11. return size + 1
  12. def __swap(self, nums, index1, index2):
  13. nums[index1], nums[index2] = nums[index2], nums[index1]