题目
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
解题思路
- 对数组进行排序,便于查看是否连续;
- 因为是最小正整数,所以判断值应从1开始;
- 只要当前元素值大于最小值,则直接返回最小值。
代码展示
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;}
}