【题目概要】
41. 缺失的第一个正数
给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
【代码示例】
// 第一步将所有不在【1,numsSize】中的数值进行numsSize+1的转化为新的数组
// 存在范围内的就是将其转化为负数
// 判断新数组第一个大于0的位置,如果全是负数,则就是numsSize+1
int firstMissingPositive(int* nums, int numsSize){
for(int i=0; i<numsSize; i++)
{
if(*(nums+i) <= 0 || *(nums+i) > numsSize)
*(nums+i) = numsSize + 1;
else
{
nums[*(nums+i) - 1] *= -1;
}
}
for(int i=0; i<numsSize; i++)
{
if(*(nums+i) > 0)
{
return i+1;
}
}
return numsSize+1;
}