您的位置:首页 > 其它

leetcode First Missing Positive

2014-11-05 21:45 316 查看
此题的题意需要好好理解一下,给的n表明数组中最大的数应该是n,数组A中本应该包括的数是1,2.....n,

根据这一点,方法如下:

第一遍遍历数组时将A[i]在1...n中间的数放在数组下标为i+1中,

第二遍遍历时若发现第一个A[i]!=i+1, 即为第一个不满足的正数

代码

class Solution {
public:
int firstMissingPositive(int A[], int n) {
if(n==0)
return 1;

for(int i = 0; i < n; ++i)
{
if(A[i]<=n&&A[i]>0&&A[A[i]-1]!=A[i])
{
int temp = A[A[i]-1];
A[A[i]-1] = A[i];
A[i] = temp;
--i;
}
}

for(int i = 0; i < n; ++i)
{
if(A[i]!=i+1)
return i+1;
}

return n+1;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: