1. 程式人生 > >[leetcode-41-First Missing Positive]

[leetcode-41-First Missing Positive]

should pla gpo miss discuss com leet algo solution

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.

思路:

Put each number in its right place.

For example:

When we find 5, then swap it with A[4].

At last, the first place where its number is not right, return the place + 1.

int firstMissingPositive(int A[], int n)
    {
        for(int i = 0; i < n; ++ i)
            while(A[i] > 0 && A[i] <= n && A[A[i] - 1] != A[i])
                swap(A[i], A[A[i] - 1]);
        
        for(int i = 0; i < n; ++ i)
            if(A[i] != i + 1)
                
return i + 1; return n + 1; }

參考:

https://discuss.leetcode.com/topic/8293/my-short-c-solution-o-1-space-and-o-n-time

[leetcode-41-First Missing Positive]