leetcode[41]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(A==NULL||n<1)return 1;

    int i;

    for (i=0;i<n;i++)

    {

        if (A[i]>0&&A[i]!=i+1&&A[i]<=n&&A[i]!=A[A[i]-1])

        {

            int temp=A[i];

            A[i]=A[A[i]-1];

            A[temp-1]=temp;

            i--;

        }

    }

    for (i=0;i<n;i++)

    {

        if (A[i]!=i+1)    return i+1;

    }

    return i+1;

    }

};

 

你可能感兴趣的:(LeetCode)