码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] [First Missing Positive 2012-03-08]

时间:2014-06-13 20:25:38      阅读:241      评论:0      收藏:0      [点我收藏+]

标签:class   blog   code   color   com   os   

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.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
class Solution {
public:
     
    void LinkMove(int A[], int i, int n)
    {
        if(A[i] > n || A[i] <= 0)   
        {
            A[i] = -1;
            return;
        }
        if(A[i] == i+1)   return;
         
        int s = A[i]-1;
         
        int tmp = A[s];
        A[s] = A[i];
        A[i] = tmp;
        if(A[s] != A[i] ) //should be check, or there will be a circle call
        {
            LinkMove(A, i, n);
        }
    }
    int firstMissingPositive(int A[], int n) {
        for(int i = 0;i<n;i++)
        {
            LinkMove(A, i, n);
        }
        for(int i = 0; i< n; i++)
        {
            if(A[i] <= 0 || A[i] != i+1) return i+1; 
        }
        return n+1;
    }
};

 

[LeetCode] [First Missing Positive 2012-03-08],布布扣,bubuko.com

[LeetCode] [First Missing Positive 2012-03-08]

标签:class   blog   code   color   com   os   

原文地址:http://www.cnblogs.com/xxiao1119/p/3784139.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!