leetcode 41. 缺失的第一个正数
https://leetcode-cn.com/problems/first-missing-positive/submissions/
class Solution(object):
def firstMissingPositive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if nums==[]:
return 1
n=len(nums)
#元神归位
k=0
while k<n:
#print(k,nums)
if nums[k]<n and nums[k]>=0 and nums[nums[k]]!=nums[k]:
#注意,此处不能用nums[nums[i]],nums[i]=nums[i],nums[nums[i]]
tmp=nums[k]
nums[k]=nums[tmp]
nums[tmp]=tmp
else:
k+=1
#遍历1~n-1,找到第一个a[i]!=i的数:
for i in range(1,n):
if nums[i]!=i:
return i
#最后考虑0位置
return n+(nums[0]==n)