LeetCode 128. 最长连续序列

news2025/1/18 18:55:12

🌈🌈😄😄

欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 128. 最长连续序列,做好准备了么,那么开始吧。

🌲🌲🐴🐴

一、题目名称

LeetCode 128. 最长连续序列

二、题目要求

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

三、相应举例

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

四、限制要求

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

五、解决办法

哈希表

对于匹配的过程,暴力的方法是 O(n) 遍历数组去看是否存在这个数,但其实更高效的方法是用一个哈希表存储数组中的数,这样查看一个数是否存在即能优化至 O(1)的时间复杂度。

由于我们要枚举的数 x 一定是在数组中不存在前驱数 x-1 的,不然按照上面的分析我们会从 x-1 开始尝试匹配,因此我们每次在哈希表中检查是否存在 x-1即能判断是否需要跳过了。

六、代码实现

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
        for (int num : nums) {
            num_set.add(num);
        }

        int longestStreak = 0;

        for (int num : num_set) {
            if (!num_set.contains(num - 1)) {
                int currentNum = num;
                int currentStreak = 1;

                while (num_set.contains(currentNum + 1)) {
                    currentNum += 1;
                    currentStreak += 1;
                }

                longestStreak = Math.max(longestStreak, currentStreak);
            }
        }

        return longestStreak;
    }
}

 

 

 

时间复杂度:

外层循环需要 O(n)的时间复杂度,只有当一个数是连续序列的第一个数的情况下才会进入内层循环,然后在内层循环中匹配连续序列中的数。

因此数组中的数

当没有连续数时,不进入内层循环,如1,3,5,8;

当有连续数时,只进入一次内层循环,如1,2,5,6,7,8,只有1和5进入。

总时间复杂度为 O(n)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155490.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

反电信网络诈骗普法宣传答题实现联表查询学生的平均成绩

国际经济与贸易学院组织反电信网络诈骗线上答题活动&#xff0c;开展集中普法宣传教育活动&#xff0c;从而构筑立体化反诈骗防线。通过此次比赛&#xff0c;引导广大同学时刻牢记反诈骗内容&#xff0c;提高师生的自我财产安全防范意识&#xff0c;加强自我网络保护的思想理念…

Java中列表的基本操作

文章目录1、定义列表2、增删改操作&#xff08;1&#xff09;新增&#xff08;2&#xff09;删除&#xff08;3&#xff09;修改3、访问列表4、遍历列表&#xff08;1&#xff09;for循环遍历&#xff08;2&#xff09;foreach遍历&#xff08;3&#xff09;iterator迭代器遍历…

weblogic t3协议报错

目录 1、背景 2、报错信息 3、检测t3协议是否正常 1、背景 在上次生产环境版本升级的时候遇到问题&#xff0c;运维人员告知升级失败&#xff0c;然后首先怀疑是版本问题&#xff0c;就仔细检查了版本信息&#xff0c;没发现异常&#xff0c;然后与运维沟通获取到报错信息如…

如何利用 knest 构建数据中心的 Kubernetes as a Service?

随着越来越多的企业和应用转向云原生架构&#xff0c;对 Kubernetes 集群的需求也日趋多样化和灵活化。出于故障隔离的考虑&#xff0c;企业的数据中心往往需要多个独立的 Kubernetes 集群来承载不同的业务&#xff0c;而不是全部署在一个共享 Kubernetes 集群上。此外&#xf…

elastic search window安装,基础概念,项目实例

elastic searchelasticsearch场景window 安装教程基本配置成功标志基础知识名词概念介绍文档元数据索引创建原则创建实例创建索引指定 分区&#xff0c;片区的创建创建带有类型、映射的索引(Index)创建文档创建文档spring boot 整合项目实践全文检索高亮显示elasticsearch场景 …

CANoe的各模块节点是如何选择应用层通道的

当CANoe为Channel-based access模式时,需要配置软硬件通道的映射;当CANoe为Network-based access模式时,需要配置软硬件网络的映射 通道映射: 网络映射: 当然,只有CANoe软件工作模式为Real bus时,才需要软硬件通道或网络映射。如果工作模式为Simulated bus时,不需要软…

如何使用 Authing 实现 AWS CLI 单点登录?

越来越多企业和开发者依赖使用 Authing 单点登录 SSO 来便捷无缝的访问 AWS 服务。随着组织将更多业务上云&#xff0c;为员工提供无缝安全的访问认证&#xff0c;以此来提升员工的工作效率和保障企业的信息安全至关重要。 但随着业务的扩张&#xff0c;会发现在 AWS 环境中管…

pdf转换成word加密怎么办,这个方法能派上用场!

处理文档的时候难免遇到各种难题&#xff0c;就比如格式切换&#xff0c;PDF转word就是很常见的需求。有些工作性质比较特殊&#xff0c;对文档对保密性也有要求。这时候不仅要会把PDF转成word文档&#xff0c;还要学会给文档加密。有没有工具能把这两件事都办到呢?答案是有&a…

直播美颜SDK贴纸功能实现流程、贴纸代码分析

时下&#xff0c;直播美颜SDK已经成了大家日常拍摄以及专业美颜的必备工具。另外它也接入到了各种社交平台、短视频平台、直播平台中&#xff0c;此类平台中大部分用户都熟练掌握了美颜SDK的拍摄技巧&#xff0c;特别是短视频平台中&#xff0c;几乎每个用户都曾经使用过。根据…

极光笔记 | 如何为 iOS 16 创建一个实时活动

01、iOS 16 中的 Live Activity &#xff08;实时活动&#xff09;是什么&#xff1f;根据 Apple 官方描述&#xff0c;“实时活动是一项新功能&#xff0c;可帮助用户直接从锁定屏幕实时获知各种事情的进展&#xff0c;例如体育比赛、锻炼、拼车或送餐订单进度等等” 。例如&a…

Revit中基线的作用和【类型可见性】功能

一、Revit中基线的作用 Revit中基线是一个重要但又容易被忽视的内容&#xff0c;本文就简单介绍一下基线的一些常用功能&#xff0c;基线的作用&#xff1a; 1、参照底图 基线调整为其他层时&#xff0c;可以在当前视图中半色调显示&#xff0c;方便参照。 2、定位 3、基线还可…

【UE4 第一人称射击游戏】35-击中目标时添加准心提示

上一篇&#xff1a;【UE4 第一人称射击游戏】34-制作一个简易计时器本篇效果&#xff1a;可以看到击中目标后有了一个红色准心的提示效果步骤&#xff1a;新建一个控件蓝图&#xff0c;命名为“Hitmarker”双击打开“Hitmarker”&#xff0c;拖入一个图像控件&#xff0c;锚点设…

前端性能优化(七):前沿优化解决方案

目录 一&#xff1a;拯救移动端图标 - SVG 1.1.从 PNG 到 IconFont 1.2.从 IconFont 到 SVG 二&#xff1a;使用 Flexbox 优化布局 三&#xff1a;优化资源的加载顺序 3.1.Preload 3.2.Prefetch 四&#xff1a;预渲染页面 五&#xff1a;Windowing&#xff08;窗口化&…

Tomcat集群应用同步 —— 源码分析

文章目录前言一、应用同步的配置与实现原理二、应用同步源码分析三、如何获取集群的节点列表四、通讯模块Tribe五、集群的Session同步六、集群的Session共享总结前言 相信大家对Tomcat的集群部署都不陌生&#xff0c;以往&#xff0c;我们手动搭建一个Tomcat的集群环境&#x…

2023年运动耳机最新排行榜公布、公认最好用的五款运动耳机推荐

建议大家不要轻易尝试那些低价运动耳机&#xff0c;因为这些耳机大多数&#xff0c;只能满足基本听个响&#xff0c;舒适度和蓝牙稳定性都有代提高。通勤使用还勉强&#xff0c;运动强度一大&#xff0c;耳机容易掉落不说&#xff0c;蓝牙连接也很容易掉线&#xff0c;体验感受…

【自学Python】Python算术运算符

Python算术运算符 Python算术运算符教程 Python 中算术运算符是对 数值类型 的 变量 进行运算的&#xff0c;比如&#xff1a;加、减、乘、除、取模、整除和乘方运算等。 Python算数运算符语法 运算符说明实例结果加12.34 43.2155.55-减43.21 - 12.3430.87*乘2 * 3.141596…

springdata个人学习笔记

​ 入门 初始化springboot 依赖引入 <!-- springdata--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId&g…

node与node-sass版本对应

node&#xff1a;14.0.0 npm install sass-loader7.3.1 node-sass4.14.1 --savenode-sass对应node https://github.com/sass/node-sass/releases node-sass 和 sass-loader 的对应关系一般的情况下4.XX.YY&#xff0c;XX就是对应Node XX 版本 参考

Java常用工具类方法(下)

8. IOUtilsIO流在我们日常工作中也用得比较多&#xff0c;尽管java已经给我们提供了丰富的API。但我们不得不每次读取文件&#xff0c;或者写入文件之后&#xff0c;写一些重复的的代码。手动在finally代码块中关闭流&#xff0c;不然可能会造成内存溢出。有个好消息是&#xf…

一文搞懂Linux 环境变量

一文搞懂Linux 环境变量1.环境变量分类2.读取环境变量3.环境变量修改在 Linux 系统中&#xff0c;环境变量是用来定义系统运行环境的一些参数&#xff0c;比如每个用户不同的主目录&#xff08;HOME&#xff09;。 1.环境变量分类 按照作用域来分&#xff0c;环境变量可以简单…