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.
http://www.cnblogs.com/AnnieKim/archive/2013/04/21/3034631.html
1 public class Solution { 2 public int firstMissingPositive(int[] A) { 3 if(A==null||A.length==0) 4 return 1; 5 int n=A.length; 6 for(int i=0;i<n;){ 7 if((A[i]!=i+1)&&A[i]>=1&&A[i]<=A.length&&A[A[i]-1]!=A[i]){ 8 int temp=A[A[i]-1]; 9 A[A[i]-1]=A[i]; 10 A[i]=temp; 11 }else{ 12 ++i; 13 } 14 } 15 for(int i=0;i<A.length;++i){ 16 if(A[i]!=i+1) 17 return i+1; 18 } 19 return A.length+1; 20 } 21 }