题目:

错误解答:

这样只能 通过123个
正确解答:
class Solution {
public int firstMissingPositive(int[] nums) {
Arrays.sort(nums);
int tem=0;
for(int i=0;i<nums.length;i++){
tem=nums[i]-1;//记录nums[i]所在位置 因为是最小正整数 所以是在其大小后面-1
if(0<=tem&&tem<nums.length&&nums[i]!=nums[tem]-1){//nums[i]!=nums[tem]-1 tem=nums[tem]-1
//得出位置 local后 判断local所在值是否等于nums[i]
swap(nums,tem,i);
}
}
for(int j=0;j<nums.length;j++){
if(nums[j]!=j+1){
return j+1;
}
}
return nums.length+1;
}
public void swap(int[] nums,int a,int b){
int t=nums[a];
nums[a]=nums[b];
nums[b]=t;
}
}
最小正整数 1 2 3 4 5 6....
按照数组下标来说 0位置保存1 1位置保存2
所以数组里的数 合法的最小正整数 应在1和nums.length之间 取最小 就看其他数符不符合
01:记录nums[i]所在位置 因为是最小正整数 所以是在其大小后面-1
02:得出位置 local后 判断local所在值是否等于nums[i]
这篇博客深入探讨了一种寻找数组中最小正整数缺失值的方法。通过排序、遍历和交换操作,确保数组元素在其下标对应的正整数位置,从而找到缺失的最小正整数。算法详尽分析了每一步的目的和逻辑,适合对算法感兴趣的读者学习。
1103

被折叠的 条评论
为什么被折叠?



