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.

class Solution {
public:
     int firstMissingPositive( int A[],  int n) 
    {
         if(n== 0return  1;
        
         for( int i= 0;i<n;i++)
             if(A[i]!=i+ 1 && A[i]- 1>= 0 && A[i]- 1<n && A[A[i]- 1]!=A[i])
            {
                 int tmp=A[A[i]- 1];
                A[A[i]- 1]=A[i];
                A[i]=tmp;
                i--;
            }
            
         for( int i= 0;i<n;i++)
             if(A[i]!=i+ 1return i+ 1;
         return n+ 1;
        
    }
};  

你可能感兴趣的:(first)