太有才了,将值做索引用,把每个数放到对应的位置上。
def firstMissingPositive_1(self, nums):
n=len(nums)
for i in xrange(n):
while nums[i]>0 and nums[i]<n+1 and nums[i]!=i+1 and nums[nums[i]-1]!=nums[i]:
nums[nums[i]-1],nums[i]=nums[i],nums[nums[i]-1]
miss=1
for x in nums:
if x!=miss:
return miss
miss+=1
return miss