您的位置:首页 > 其它

First Missing Positive(重重)

2014-08-29 23:59 204 查看
题目:

点击打开链接

解答:

O(N)复杂度,常量空间

把数字x放到对应的x-1的位置 例如 7 则放到A[6]中

然后遍历 如果a[i] != i+1 则是没有的

参考:
http://blog.csdn.net/havenoidea/article/details/11812717
如果不要求常量空间直接哈希

这里可以思考到 本来就是采用哈希的方法 但是不让使用额外的空间 所以就占用原有的空间实现。

代码:

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