BM4(BM53) 缺失的第一个正整数
描述
给定一个无重复元素的整数数组nums,请你找出其中没有出现的最小的正整数
进阶: 空间复杂度 ,时间复杂度
数据范围:
示例1
输入:
[1,0,2]
复制
返回值:
3
复制
示例2
输入:
[-2,3,4,1,5]
返回值:
2
示例3
输入:
[4,5,6,8,9]
返回值:
1
解析
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberDisappeared (int[] nums) {
// write code here
if (nums == null || nums.length == 0) return -1;
Arrays.sort(nums);
int min = 1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] < 1) {
continue;
} else if (nums[i] == min) {
min++;
continue;
}
}
return min;
}
}
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberDisappeared (int[] nums) {
// write code here
Arrays.sort(nums);
int res = 1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] <= 0) {
continue;
}
if (res != nums[i]) {
return res;
} else {
res++;
}
}
return res;
}
}
import java.util.*;
import java.util.stream.Collectors;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型
*/
public int minNumberDisappeared (int[] nums) {
List<Integer> collect = Arrays.stream(nums).boxed()
.filter(item -> item > 0)
.sorted(Comparator.naturalOrder())
.collect(Collectors.toList());
boolean isFirst = true;
if (collect.size() == 0) {
return 1;
} else if (collect.size() == 1) {
return (collect.get(0) != 1) ? 1 : 2;
}
for (int i = 0; i < collect.size() - 1; i++) {
int val1 = collect.get(i);
int val2 = collect.get(i + 1);
if (isFirst && val1 > 1) return 1;
if (val2 - val1 > 1) return val1 + 1;
isFirst = false;
if (i == collect.size() - 2) return val2 + 1;
}
return 1;
}
}