借鉴计数排序的思想
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberDisappeared (int[] nums) {
if(nums.length<=1) return 1;
//找最大
int len = findMax(nums);
//创建计数数组
int[] counts = new int[len+1];
//统计计数(借鉴计数排序里面的思想)
for(int i=0; i<nums.length; i++){
if(nums[i]>0){
counts[nums[i]]++;
}
}
//找缺失值:默认最大的缺失值为数组的最大值
int miss = len+1;
for(int i=1; i<=len; i++){
//如果找到计数数组里面没有被计数的下标,则为缺失
if(counts[i]<=0){
miss = Math.min(i, miss);
}
}
return miss;
}
public int findMax(int[] nums){
//找数组的最大值:最小为数组的长度
int max = nums.length;
for(int i=0; i<nums.length; i++){
max = Math.max(nums[i], max);
}
return max;
}
}