python leetcode 41. First Missing Positive
阿新 • • 發佈:2018-12-08
考察在陣列上的操作,nums[0]=1,nums[1]=2…按照這個順序在陣列上移動元素。然後在遍歷如果nums[index]!=index+1 那麼就找到了最小的丟失數。 這裡我們對陣列中數進行判斷,而不是下標,不然會死迴圈(例如[2,2,2,2])
class Solution:
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
n=len(nums)
if n== 0: return 1
i=0
while i<n:
cur=nums[i]
if cur<=0 or cur> n or cur==nums[cur-1]:
i+=1
else:
nums[cur-1],nums[i]=nums[i],nums[cur-1]
for l in range(n):
if l+1!=nums[l]:
return l+1
return n+1