41. First Missing Positive
# Hard
交换后的效果,下脚标+1=元素,即[1,2,3,-5,0]
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
# sort the list, make postivie integers in order from index of 0
# negative or duplicated elements are at the end
i = 0
while i < len(nums):
if nums[i] <= 0 or nums[i]-1 >= len(nums) or nums[i] == i+1 or nums[i] == nums[nums[i]-1]:
i += 1
else:
otherIndex = nums[i]-1
temp = nums[i]
nums[i] = nums[otherIndex]
nums[otherIndex] = temp
# find the missing one
for i in range(len(nums)):
if nums[i] != i + 1:
return i+1
return len(nums)+1
Last updated
Was this helpful?