题目
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
解题思路
- 对数组进行排序,便于查看是否连续;
- 因为是最小正整数,所以判断值应从1开始;
- 只要当前元素值大于最小值,则直接返回最小值。
代码展示
java
class Solution {
public int firstMissingPositive(int[] nums) {
Arrays.sort(nums);
int min = 1;
for (int i = 0; i < nums.length; i++){
if(nums[i] > min){
return min;
}
min = Math.max(nums[i] + 1, min);
}
return min;
}
}