Given an unsorted integer array, find the first missing positive integer.
For example,
Given [1,2,0]
return 3
,
and [3,4,-1,1]
return 2
.
Your algorithm should run in O(n) time and uses constant space
1:特使情况;2:将数组进行排序,i 放置在数组i-1的位置;3:注意循环结束的条件
int firstMissingPositive(int A[], int n)
{
if(A == NULL || n <= 0)
{
return 1;
}
for(int i = 0; i < n; i++)
{
if(A[i] == i + 1)
{
continue;
}
else
{
int temp = A[i];
while(temp != i + 1)
{
if(temp > n || temp <= 0)
{
break;
}
else
{
if(A[temp-1] == temp)
{
break;
}
else
{
A[i] = A[temp-1];
A[temp - 1] = temp;
}
}
temp = A[i];
}
}
}
for(int i = 0; i < n; i++)
{
if(A[i] != i + 1)
{
return i + 1;
}
}
return n + 1;
}