void Swap(int*a,int*b)
{
int tmp=*a;
*a=*b;
*b=tmp;
}
//遍历一次数组把大于等于1的和小于数组大小的值放到原数组对应位置,然后再遍历一次数组查当前下标是否和值对应,如果不对应那这个下标就是答案,否则遍历完都没出现那么答案就是数组长度加1。
int firstMissingPositive(int* nums, int numsSize)
{
for(int i=0;i<numsSize;i++)
{
if(nums[i]>0&&nums[i]<numsSize&&nums[nums[i]-1]!=nums[i])
{
Swap(&nums[i],&nums[nums[i]-1]);
i--;
}
}
for(int i=0;i<numsSize;i++)
{
if(nums[i]!=i+1)
return i+1;
}
return nums[numsSize-1]+1;
}