class Solution {
public int firstMissingPositive(int[] nums) {
int n = nums.length;
int[] flag = new int[n+1];
for(int i=0;i<n;i++){
if(nums[i]>0&&nums[i]<=n){
flag[nums[i]] = 1;
}
}
for(int i=1;i<=n;i++){
if(flag[i]==0){
return i;
}
}
return n+1;
}
}
1、找出未出现的最小整数,说明负数不需要考虑
2、指示数组的最大只需要nums的长度就行,大于n的数据也不需要考虑
3、如果所有指示数组的值都等于1 ,说明nums中间没有缺失,那么缺失的最小的数就是n+1.