class Solution {
public:
int firstMissingPositive(int A[], int n) {
for(int i=0;i<n;i++)
{
if(A[i]>0&&A[i]<=n)
{
if(A[i]!=i+1&&A[i]!=A[A[i]-1])
{
//将A[i]放到了i+1的位置上,交换过后,A[i]-1位置的正数in-position,此时i的正数还没放好,需要i--
swap(A[i],A[A[i]-1]);
i--;
}
}
}
for(int i=0;i<n;i++)
{
if(A[i]!=i+1)
return i+1;
return n+1;
}
}
};
public:
int firstMissingPositive(int A[], int n) {
for(int i=0;i<n;i++)
{
if(A[i]>0&&A[i]<=n)
{
if(A[i]!=i+1&&A[i]!=A[A[i]-1])
{
//将A[i]放到了i+1的位置上,交换过后,A[i]-1位置的正数in-position,此时i的正数还没放好,需要i--
swap(A[i],A[A[i]-1]);
i--;
}
}
}
for(int i=0;i<n;i++)
{
if(A[i]!=i+1)
return i+1;
return n+1;
}
}
};