Monday, February 18, 2013

First Missing Positive


/*

First Missing PositiveMar 8 '12
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) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int const MAX = 9000;
        //parameter check
        if(n<0) return 0;
        //bounary check
        if(n==0) return 1;
       
        vector<int> bitMap;
        int i;
        for(i=0; i<MAX; i++){
            bitMap.push_back(0);
        }
       
        for(i=0; i<n; i++){
            if(A[i] > 0) {
                bitMap.at(A[i]) = 1;
            }
        }
       
        for(i=1; i<MAX; i++){
            if(bitMap.at(i) == 0) return i;
        }
       
        return 0;    
    }
};

No comments:

Post a Comment