缺少的第一个正整数,对应的答案一定是在对应的范围[1,n]
将所有的负数 标记为答案范围值外的数即可
将对应的范围之内的数通过数组下标进行标记即可
class Solution {
public int firstMissingPositive(int[] nums) {
//将所有的不在对应的【1,n]范围的数都标记为对应的不符合要求的数 统一通过对应的n+1继续宁标记
int n=nums.length;
for(int i=0;i<nums.length;i++){
if(nums[i]<=0){
nums[i]=n+1;
}
}
//对于所有的大于n的书继续保持原来的书即可
for(int i=0;i<n;i++){
int num=Math.abs(nums[i]);
//将对应的位置元素设置为负数标记出现了
if(num<=n){
nums[num-1]=-Math.abs(nums[num-1]);
}
}
//遍历数组对于第一个为正数的位置即为对应的元素
for(int i=0;i<n;i++){
if(nums[i]>0){
return i+1;
}
}
return n+1;
}
}