[leetcode-41-First Missing Positive]

Posted hellowOOOrld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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.

 

思路:

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]的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 41. First Missing Positive

[array] leetcode - 41. First Missing Positive - Hard

[leetcode-41-First Missing Positive]

Leetcode 41: First Missing Positive

LeetCode41 First Missing Positive

leetcode 41. First Missing Positive