算法系列——缺失的第一个正整数

Posted BridgeGeorge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法系列——缺失的第一个正整数相关的知识,希望对你有一定的参考价值。

题目

你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

思路

  1. 哈希法
    hash 计数:需要额外的空间。所有出现的数字,hash 值 + 1。第二次从 1 开始查找 hash 表,找不到就是它了。但是这种方案不符合题意,而且 hash 计数这个方案效率也不是最优的。
  2. 置换法
    (待补充)

代码

class Solution 
    public int firstMissingPositive(int[] nums) 
        Map<Integer,Integer> map=new HashMap<>();
        for(int i=0;i<nums.length;i++)
            map.put(nums[i],i);
        
        int result=1;
        while(map.containsKey(result))
            result++;
        
        return result;
    


以上是关于算法系列——缺失的第一个正整数的主要内容,如果未能解决你的问题,请参考以下文章

算法系列——缺失的第一个正整数

算法系列——缺失的第一个正整数

算法系列——缺失的第一个正整数

41. 缺失的第一个正数

LeetCode:缺失的第一个正数41

2021-07-12:缺失的第一个正数。给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。比如[3,4,5