题目

分析
本题是找出未出现的最小正整数,因此找出数组arr中的最大值max,然后创建一个长度为max+1的数组dp用于记录arr中出现的所有正整数,然后遍历dp遇到的第一个下标未被标记的数就是最小的未出现的正整数;如果没有遇到,那么dp的长度就是未出现的最小正整数,如[1,2,3,4]的最小未出现的正整数是5
代码:
public int minNumberdisappered (int[] arr) {
int max = Integer.MIN_VALUE;
//找出数组中的最大值
for(int i = 0; i < arr.length; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
int[] dp = new int[max+1];
for(int i = 0; i < arr.length; i++) {
if(arr[i] > 0) {
dp[arr[i]] = 1;
}
}
for(int i = 1; i < dp.length; i++) {
if(dp[i] != 1) {
return i;
}
}
return dp.length;
}
1187

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



