数组 41缺失的第一个正数题解
给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
正常做法,排序,遍历 找出缺失最小的正整数
就算是快排 复杂度也 O(n*logn)了
注意提示中
0 <= nums.length <= 300
-231 <= nums[i] <= 231 - 1
输入的参数值很大,但是长度只有300,说明在1-301内一定存在缺失的正整数,直接来一个300的桶,直接桶插 ,复杂度O(n) 美滋滋
public int firstMissingPositive(int[] nums) {
int sum[] = new int[302];
for (int i = 0; i < nums.length; i++) {
if (nums[i] >0 && nums[i] <=300) {
sum[nums[i]] = 1;
}
}
<pre><code> for (int i = 1; i <= 301; i++) {
if (sum[i] == 0) {
return i;
}
}
return 0;
}
评论区