当前位置: 首页 > news >正文

【LeetCode最详尽解答】128_最长连续序列 Longest-Consecutive-Sequence

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家!

链接:

  • 128_最长连续序列

直觉

  • 输入: nums = [100, 4, 200, 1, 3, 2]
  • 输出: 4
  • 解释: 最长的连续元素序列是 [1, 2, 3, 4]。因此它的长度是 4

首先,我们需要找到每个递增序列的起始位置,并且舍弃重复的值。所以先使用 set(nums)nums 转换为一个集合。集合中的每个值可能是起始位置,也可能只是序列的一部分。我们只需要找到起始值。

考虑列表 [1, 2, 3, 4, 5, 6]。如果不只找起始点,它会计算从 1-62-63-6 等开始的序列,导致 ( O ( n 2 ) (O(n^2) (O(n2) 的复杂度。为了确保线性时间复杂度,我们需要仅识别每个间隔的起始点。

当遇到一个值时,如果 n-1 在集合中,跳过它,因为它不是起始位置。如果 n-1 不在集合中,说明 n 是一个起始值,我们将长度初始化为 1。当 n + length 在集合中时,长度加 1。然后,将结果更新为 length 和当前结果中的最大值。

方法

我们将找到每个起始位置,并使用哈希集合存储 nums 的所有值。当我们找到一个起始位置时,我们将从这个位置计算序列的长度。然后,更新最终结果并返回它。

找到起始位置:

  • 如果 n-1 不在 numset 中,那么 n 是一个起始位置。
  • 将长度初始化为 1
  • n + lengthnumset 中时,我们增加长度。
  • 最后,用找到的最长长度更新结果。

复杂度

  • 时间复杂度:
    O ( n ) O(n) O(n)

    • 创建集合: O ( n ) O(n) O(n)
    • 遍历列表: O ( n ) O(n) O(n)
    • 检查序列的起始点并计算长度: O ( n ) O(n) O(n)
  • 空间复杂度:
    O ( n ) O(n) O(n)

    • 集合的空间: O ( n ) O(n) O(n)
    • 其他变量的空间: O ( 1 ) O(1) O(1)

代码

class Solution(object):def longestConsecutive(self, nums):""":type nums: List[int]:rtype: int"""numset = set(nums)longest = 0for n in nums:# calculate just from the starting positionif n-1 not in numset:length = 1while n + length in numset:length+=1longest = max(longest, length)return longest
http://www.lryc.cn/news/372185.html

相关文章:

  • 盒马鲜生礼品卡如何使用?
  • 有哪些常用ORM框架
  • nodejs 中 axios 设置 burp 抓取 http 与 https
  • 数据通信与网络(二)
  • DTU为何应用如此广泛?
  • 基于软件在环的飞控机建模仿真
  • github ssh key的SHA256是什么
  • HyperBDR新版本上线,自动化容灾兼容再升级!
  • python学习—合并多个Excel工作簿表格文件
  • 如何把路由器设备的LAN口地址为三大私网地址
  • Java多线程-StampedLock(原子读写锁)
  • (源码)一套医学影像PACS系统源码 医院系统源码 提供数据接收、图像处理、测量、保存、管理、远程医疗和系统参数设置等功能
  • 【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
  • # RocketMQ 实战:模拟电商网站场景综合案例(五)
  • Cesium4Unreal - # 009 直接加载显示shapefile
  • Release和Debug的区别?Release有什么好处?【面试】
  • DevExpress 控件和库
  • 车载以太网测试
  • 181.二叉树:验证二叉树(力扣)
  • 陪诊小程序开发,陪诊师在线接单
  • 【全开源】Java无人共享棋牌室茶室台球室系统JAVA版本支持微信小程序+微信公众号
  • 2024-6-10-zero shot,few shot以及无监督学习之间的关系是什么
  • C语言|十进制数转换任意进制数
  • 驱动开发(二):创建字符设备驱动
  • Golang:使用时会遇到的错误及解决方法详解
  • r语言数据分析案例25-基于向量自回归模型的标准普尔 500 指数长期预测与机制分析
  • 解决使用Jmeter进行测试时出现“302“,‘‘401“等用户未登录的问题
  • MySql通过 Procedure 循环删除数据
  • Spring Boot 的启动原理、Spring Boot 自动配置原理
  • 不会开发的你也能管理好企业漏洞,开源免费工具:洞察(insight II)