博客
关于我
leetcode题解41-缺失的第一个正数原来如此简单
阅读量:790 次
发布时间:2023-01-31

本文共 1297 字,大约阅读时间需要 4 分钟。

要解决这个问题,我们需要找出一个未排序的整数数组中没有出现的最小的正整数。这种方法可以通过高效地使用集合来实现。

方法思路

  • 收集所有正整数:首先遍历输入数组,并将所有正整数存储在一个集合中,这样可以快速检查某个数是否存在。
  • 边界检查:如果集合为空,说明所有的正整数都缺失,因此直接返回1。如果集合的最小值大于1,说明1缺失,所以返回1。
  • 检查缺失数:从1开始递增地检查每个正整数,直到找到第一个不存在的数。
  • 处理连续数的情况:如果所有检查过的数都存在,那么最后一个数的下一个正整数即为答案。
  • 这种方法的时间复杂度为O(n log n),因为我们需要对这些正整数进行排序。

    解决代码

    import java.util.Collections;import java.util.Set;import java.util.TreeSet;public class Solution {    public int firstMissingPositive(int[] nums) {        Set
    positiveNumbers = new TreeSet<>(); for (int num : nums) { if (num > 0) { positiveNumbers.add(num); } } if (positiveNumbers.isEmpty()) { return 1; } int min = Collections.min(positiveNumbers); if (min > 1) { return 1; } int max = Collections.max(positiveNumbers); int candidate = 1; while (candidate < max) { if (!positiveNumbers.contains(candidate)) { return candidate; } candidate++; } return max + 1; }}

    代码解释

  • 创建集合:使用TreeSet来存储所有的正整数。TreeSet能够自动排序和去重,这使得查找最小值和最大值非常方便。
  • 处理空集合情况:如果正整数集合为空,说明所有正整数都缺失,所以返回1。
  • 检查最小值大于1的情况:如果最小的正整数大于1,说明1缺失,直接返回1。
  • 递增检查:从2开始逐个检查正整数,直到找到不存在的数。
  • 处理连续情况:如果所有检查过的数都存在,返回最大值加1,因为这是下一个最小的正整数。
  • 这种方法高效地解决了问题,能够快速找到最小的缺失正整数。

    转载地址:http://cegyk.baihongyu.com/

    你可能感兴趣的文章
    Kubernetes网络插件使用详解
    查看>>
    Kubernetes调度单位Pod
    查看>>
    Kubernetes部署Dashboard实战
    查看>>
    Kubernetes集群升级实战
    查看>>
    KubeSphere核心实战_kubesphere部署redis02_创建redis现指定存储卷_配置外网访问服务---分布式云原生部署架构搭建048
    查看>>
    KuiperInfer深度学习推理框架-源码阅读和二次开发(3):计算图
    查看>>
    KxMenu下拉菜单
    查看>>
    KXML2部分详解(J2ME)
    查看>>
    Lambda 表达式(使用前提、“类型推断”、作用、优缺点、Lambda还能省略的情况)【java8新特性------Lambda 表达式】
    查看>>
    lambda表达式与匿名内部类与双冒号(::)
    查看>>
    lamp 一键安装
    查看>>
    Lamp(Fpm-Php)基本配置
    查看>>
    laradock 安装使用 kafka
    查看>>
    laravel 5.3 给容器传参
    查看>>
    laravel 5.5 -- Eloquent 模型关联
    查看>>
    laravel mix
    查看>>
    Laravel Passport
    查看>>
    laravel 之 Eloquent 模型修改器和序列化
    查看>>
    Laravel 使用 - artisan schedule使用
    查看>>
    Laravel 使用rdkafka
    查看>>