原题地址:https://oj.leetcode.com/problems/first-missing-positive/
题意:
Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0]
return 3
,
and [3,4,-1,1]
return 2
.
Your algorithm should run in O(n) time and uses constant space.
解题思路:要求时间复杂度为O(n)和常数空间。又是一个tricky的解法。
class Solution: # @param A, a list of integers # @return an integer # @a very subtle solution def firstMissingPositive(self, A): n=len(A) for i in range(n): if A[i]<=0: A[i]=n+2 for i in range(n): if abs(A[i])<=n: curr=abs(A[i])-1 A[curr]=-abs(A[curr]) for i in range(n): if A[i]>0: return i+1 return n+1