您的位置:首页 > 其它

[leetcode刷题系列]First Missing Positive

2013-08-06 19:43 357 查看
好吧,智商是硬伤。 我承认题目要求的O(n)复杂度和常量空间,我没想到算法。于是就Google了下。

这种思路确实第一次见。长见识了。

class Solution {
public:
int firstMissingPositive(int A[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
for(int i = 0; i < n; ++ i){
int now = i;
while(now >= 0 && now < n){
if(A[now] - 1 == now)
break;
int target = A[now] - 1;
if(target < 0 || target >= n || A[now] == A[target])
break;
swap(A[target], A[now]);
}
}
for(int i = 0; i < n; ++ i)
if(A[i] != i + 1)
return i + 1;
return n + 1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: