class Solution {
public int firstMissingPositive(int[] nums) {
Arrays.sort(nums);
int index = 1;
// 判断所给数组是否为空
if(nums.length == 0 || nums == null){
index = 1;
}
for(int i = 0; i < nums.length; i ++){
// 如果是正整数进入if嵌套
if(nums[i] > 0){
// 判断当前数组数是否大于index
if(index < nums[i]){
index = index;
}else if(index == nums[i]){
// 判断该位置的数是否正确
index ++;
}else{
// 当数组中出现两个相同的数后,index与nums[i]的关系为第三种
continue;
}
}else{
// 如果是负数或零则继续循环
continue;
}
}
return index;
}
}
分析:
先排序,遍历该数组,先找到正整数开始的位置,判断从该位置开始是否是从1开始的有序列,
检验位等于它的话,检验位(index)加一,
检验位小于它的话,说明检验位缺失,
检验位大于他的话,说明有重复数