数组 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 &lt;= 301; i++) {
         if (sum[i] == 0) {
             return i;
         }
     }
     return 0;
}