# coding: utf-8 class Solution: # @param A, a list of integers # @return an integer def firstMissingPositive(self, A): # write your code here ''' å¯¹äºæ¯ä¸ªå¤§äºçäº0çæ°æ¾å°å¯¹åºçä½ç½®ä¸ï¼ è¿å第ä¸ä¸ªA[i] != i + 1çæ°ã ''' i = 0 while i < len(A): if (A[i] >= len(A)) or (A[i] < 0): i += 1 # ä¸ç¬¦åæ¡ä»¶çæ°ä¸ç®¡ï¼ elif A[i] != i + 1: # 对äºä¸å¨å¯¹åºä½ç½®çæ°è¦æ¾å°æ£ç¡®çä½ç½® j = A[i] if A[i] != A[j - 1]: A[i], A[j - 1] = A[j - 1], A[i] else: i += 1 else: i += 1 for i in xrange(0, len(A)): if A[i] != (i + 1): return i + 1 return len(A) + 1 # medium: http://lintcode.com/zh-cn/problem/first-missing-positive/