[ LeetCode ] 题刷刷(Python)-第128题:最长连续序列

题目描述

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

示例

示例 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

解题

解法一: 遍历+哈希表特性:O(1) 时间复杂度的成员查找

思路

如果在当前整数,让找到其余的连续序列元素,那么可以不断加1,并判断这个加1结果的数是否存在于集合中,存在则连续序列长度又加1,然后每次查找最长连续序列后,把最长连续序列的长度更新到最大。

对于最长连续序列这个问题,关键是要确定连续序列开始的数字是哪一个。

只需要利用num-1,然后判断是否存在于当前集合中,如果不存在则代表这个数很有可能是一个连续序列的开始数字,因为不存在挨着比它更小的了。

算法复杂度

时间复杂度: O(n),其中 n 为原数组的长度。

仅需遍历一次集合(集合大小等于原数组中不重复元素的数量),且每次查找操作的时间复杂度为 O(1)(得益于哈希表的特性)。因此,总时间复杂度为 O(n)。


空间复杂度: O(n),其中 n 为原数组的长度。

构建不重复元素集合需要额外的空间存储,最坏情况下,集合的大小等于原数组长度,即空间复杂度为 O(n)。

代码
class Solution:def longestConsecutive(self, nums: List[int]) -> int:# 转换为不重复元素集合nums_set = set(nums)# 初始化最长连续序列长度longest_count = 0for num in nums_set:# 如果当前整数-1,不存在于数组中,这代表当前整数可能是某个连续序列的开始数字# num num+1 num+2 ...if num - 1 not in nums_set:# 记录连续序列的开始数字current_num = num# 设置当前连续序列最大长度为1current_count = 1# 一直寻找连续序列,记录当前连续序列最大长度while current_num + 1 in nums_set:current_num += 1current_count += 1# 取最大的连续序列长度longest_count = max(longest_count, current_count)return longest_count

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

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

相关文章

Vol.44 一个分享网站的网站,每个月8.7万访问量

哈咯,各位朋友好啊,我是欧维,今天要给大家分享的网址是Fuun.fun,奇趣网站收藏家; 它的网址是:FUUN.FUN 这是一个我经常逛的网站,为什么我经常逛呢?因为可以从中发现一些有意思的网站…

全量知识系统 程序详细设计“知识”的原则及运用

今天我们聊聊 全量知识系统(以下简称“全知系统”)中的“知识”的原则及运用。 全知系统“程序”的三个“计算”方面 ”用户消费功能function快照”(局部规模scale和点击率),“客户消化能力competence画像”&#xf…

数据库-Redis(8)

目录 36.可以每秒做一次RDB快照吗? 37.AOF是写前日志还是写后日志? 38.什么是AOF重写?

上位机图像处理和嵌入式模块部署(智能硬件的开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 目前,用上位机软件虽然可以部署项目,但是它本身有自己的缺点,那就是稳定性差、价格贵。稳定性这部分&#xff0…

Linux 快问快答

如果对于找 Java 后端开发的话,我感觉会这几个差不多了,面试官应该不会问的这么详细吧。一般就问问 Linux 的几个常用的命令,然后做一些简单的性能排查就好了。如果面试被问到另外的问题,那我再补充进来,现在先掌握这么…

kinit 笔记

介绍: Kinit 是一套开箱即用的中后台解决方案,可以作为新项目的启动模版,前后端分离架构,开箱即用,在线例子:https://kinit.ktianc.top/login。 1. 后端Api应用安装及初始化 # 获取 git clone https://g…

Java 中命令模式,请用代码具体举例

在Java中,命令模式是一种行为设计模式,它允许将请求封装成一个对象,从而使得可以参数化其他对象对请求进行调用、队列化请求、或者记录请求日志,同时支持可撤销的操作。 下面是一个简单的示例代码,展示了如何使用命令模…

CMC学习系列 (8):动态力输出期间的伽马范围皮质相干性

CMC学习系列:动态力输出期间的伽马范围皮质相干性 0. 引言1. 主要贡献2. 方法3. 结果4. 讨论5. 总结欢迎来稿 论文地址:https://www.sciencedirect.com/science/article/abs/pii/S1053811906010238 论文题目:Gamma-range corticomuscular coherence duri…

【面试八股文之操作系统】

1.什么是用户态和内核态? 用户态和内核态是操作系统中的两种运行模式或特权级别。 用户态:在用户态下,应用程序以及用户自己编写的代码运行,其权限受到限制,不能直接访问底层系统资源和执行特权操作。用户态只能受限地…

OSPF动态路由实验(思科)

华为设备参考: 一,技术简介 OSPF(Open Shortest Path First)是一种内部网关协议,主要用于在单一自治系统内决策路由。它是一种基于链路状态的路由协议,通过链路状态路由算法来实现动态路由选择。 OSPF的…

D. Nene and the Mex Operator

解题思路 若选定一个区间,则可以构造成值全为构造方如下:先将区间全变为0(若区间有0且不全为0两次(全变为一个值后再全变为0),若没有0则一次,若已经全为0则0次)保留r为0&#xff0c…

Vol.45 这个壁纸网址,功能简单,每月37.7万访问量

哈咯,大家好,我是欧维,今天要给大家分享的网站是:极简壁纸,一个专门做电脑壁纸的网站; 它的网址是:极简壁纸_海量电脑桌面壁纸美图_4K超高清_最潮壁纸网站 网站的壁纸质量很高,页面…

Open CASCADE学习|BRepOffsetAPI_DraftAngle

BRepOffsetAPI_DraftAngle 是 Open CASCADE Technology (OCCT) 中用于创建带有草图斜面的几何体的类。草图斜面是一种在零件设计中常见的特征,它可以在零件的表面上创建一个倾斜的面,通常用于便于零件的脱模或是增加零件的强度。 本例演示了如何创建一个…

【系统分析师】数据库部分

文章目录 1、数据库模式2、数据库设计过程2.1ER模型 3、关系代数 ☆5、规范化理论☆5.1 非规范存在的问题5.2 相关概念5.3范式5.3.1 第一范式-1NF5.3.2 第二范式-2NF5.2.3 第三范式5.2.4 BC范式 5.4 函数依赖分解5.4.1保持函数依赖分解5.4.2 无损分解 5.5 Armstong公理系统 6、…

策略为王股票软件源代码\StkUI\View\RealTime.cpp------分时行情界面------程序代码基本都在里面

搜索 成交... C:\Users\Administrator\Desktop\源代码\策略为王股票软件源代码\StkUI\StkUI.rc(395): MENUITEM "以成交均价为准(&A)", ID_VIEW_MAINDATAAVERAGE C:\Users\Administrator\Desktop\源代码\策略为王股票软件源代码\StkUI\StkUI…

shardingsphere从4.1.1升级到5.2.1

作为工程师都希望自己的产品能够大卖,而项目开发中使用的技术不可能所有都是自己写的,使用到的开源组件例如shardingsphere这样好的组件,也会随着用户量的增加而需要升级,没必要非得像hutool那样非得自己写一边,当然hu…

MySQL基础入门上篇

MySQL基础 介绍 mysql -uroot -p -h127.0.0.1 -P3306项目设计 具备数据库一定的设计能力和操作数据的能力。 数据库设计DDL 定义 操作 显示所有数据库 show databases;创建数据库 create database db02;数据库名唯一,不能重复。 查询是否创建成功 加入一些…

lesson02 类与对象(上)

1.类的定义 2.类的访问限定符及封装 3.类的作用域 4.类的实例化 5.类的对象的大小计算 6.类成员函数的this指针 1.类的定义 class className {//类体:由成员函数和成员变量组成 }; class是声明类的关键字,className是类的名字,花括号…

JVM修炼之路【12】- GC调优 、性能调优

上一篇中 我们详细讲了内存溢出 内存泄漏 还有相关的案例。 这篇博客中我们主要了解一下GC调优。 有些新手可能会有一点 疑问—— 这两者不是一回事吗?? 其实说一回事 也没错 因为GC调优本质上还是针对 堆上的内存 只不过前面我们关注的侧重点在于 不合…

软件设计师——软件工程基础知识

软件工程基础知识 软件过程软件过程模型软件测试方法进度管理软件复杂性度量环路复杂度耦合聚合和组合 软件过程 软件过程模型 软件测试方法 黑盒测试和白盒测试 白盒测试中,语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。 进度管…