代码改变世界

leetcode - First Missing Positive

2013-04-12 16:06  张汉生  阅读(149)  评论(0编辑  收藏  举报

题目描述:点击此处

利用到原来的数组空间,不知道符不符合题意。

 1 class Solution {
 2 public:
 3   int firstMissingPositive(int A[], int n) {
 4     // Start typing your C/C++ solution below
 5     // DO NOT write int main() function
 6     int i, j;
 7     for (i=0; i<n; i++){
 8       if (A[i]<=0 || A[i]>n)
 9         A[i] = 0;
10     }
11     i=0;
12     while (i<n){
13       if (A[i]>0){
14         j = A[i] - 1;
15         if (A[j]>0 && A[A[j]-1]!=-1){
16           A[i] = A[j];
17           A[j] =-1;
18           continue;
19         }
20         A[j] = -1;
21         A[i] = 0;
22       }
23       i++;
24     }
25     i=0;
26     while (i<n && A[i]==-1)
27       i++;
28     return i+1;
29   }
30 };