给定一个未排序的整数数组,找出其中没有出现的最小的正整数。
示例 1:
输入: [1,2,0]
输出: 3
示例 2:
输入: [3,4,-1,1]
输出: 2
示例 3:
输入: [7,8,9,11,12]
输出: 1
解题思路,他和上一个找空缺数集合的思路一样,如果不对应,我就把你换到那你该去的位置,也就是索引位置为数值的大小减一,如果要换的位置已经有一个和你一样的,那就没必要了,你是多余的,呆着吧,如果你呆的位置有人,人家待会把你换走,不然这个位置就是没人,也就是我们第二次遍历时的位置内的数和索引不对应,把你揪出来就行了。
class Solution {
public int firstMissingPositive(int[] nums) {
int temp;
for(int i=0;i<nums.length;i++)
{
if(nums[i]>0&&nums[i]<=nums.length&&nums[i]!=nums[nums[i]-1])
{
temp=nums[nums[i]-1];
nums[nums[i]-1]=nums[i];
nums[i]=temp;
i--;
}
}
for(int i=0;i<nums.length;i++)
{
if(nums[i]!=i+1)
return i+1;
}
return nums.length+1;
}
}