/** * 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. * */ public class FirstMissingPositive { // 156 / 156 test cases passed. // Status: Accepted // Runtime: 235 ms // Submitted: 0 minutes ago public int firstMissingPositive(int[] A) { if(A.length == 0) return 1; for (int i = 0; i < A.length; i++) { int j = A[i]; while( j > 0 && j < A.length && A[j] != j) { exch(A, i, j); j = A[i]; } } for(int i = 1; i < A.length; i++) { if(A[i] != i) return i; } return (A[0] == A.length) ? A.length + 1 : A.length; } public void exch(int[] A, int i, int j) { int temp = A[i]; A[i] = A[j]; A[j] = temp; } public static void main(String[] args) { } }
[LeetCode 41] First Missing Positive
原文:http://blog.csdn.net/ever223/article/details/44620307