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

【Leetcode Hot 100 题目精华解析2025】python自用 --128.最长连续序列

128.最长连续序列

  • 解题思路
  • 代码实现
  • 核心要点

要实现 O(n) 时间复杂度,我们需要避免排序(排序是 O(n log n)),通常的做法是用 哈希集合 (set) 进行常数时间的查找。

解题思路

1、去重 + 放入哈希集合

我们用 set(nums) 保存所有数字,这样查找一个数是否存在是 O(1)。

2、只从“连续序列的起点”开始向后找

如果 x - 1 不在集合中,说明 x 是一个连续序列的开头。(if)

然后从 x 往后找 x+1, x+2, ...,直到找不到为止,计算长度。(while)

3、记录最大长度

在遍历所有起点时更新最大值。(max)

代码实现

def longestConsecutive(nums):if not nums:return 0num_set = set(nums)longest = 0for num in num_set:# 只从连续序列的起点开始if num - 1 not in num_set:current = numlength = 1# 向后找连续的数字while current + 1 in num_set:current += 1length += 1longest = max(longest, length)return longest

测试

print(longestConsecutive([100, 4, 200, 1, 3, 2]))  # 4
print(longestConsecutive([0, 3, 7, 2, 5, 8, 4, 6, 0, 1]))  # 9
print(longestConsecutive([1, 0, 1, 2]))  # 3

核心要点

O(n) 的关键是:

  • 用 set 做 O(1) 查找
  • 只从“连续序列的起点”开始向后找,避免重复计数空间复杂度为 O(n)(哈希集合存储所有元素)。
http://www.dtcms.com/a/320745.html

相关文章:

  • 腾讯前端面试真题
  • Kafka生产者事务机制原理
  • Java集合中的链表
  • 解耦主库负载,赋能数据流转:MySQL Binlog Server 核心指南
  • Web 图像捕获革命:ImageCapture API 全面解析与实战指南
  • mt6897 scp a+g sh5201 porting记录
  • 数据结构:哈希表、排序和查找
  • 光子精密3D工业相机的应用与优势解析
  • CS231n2017 Assignment3 PyTorch部分
  • 代理模式在C++中的实现及面向对象设计原则的满足
  • 利用哥斯拉(Godzilla)进行文件上传漏洞渗透实战分析
  • ​「解决方案」Linux 无法在 NTFS 硬盘上创建文件/文件夹的问题
  • C++多态与虚函数的原理解析
  • MySQL的触发器:
  • 虹科技术分享 | LIN总线译码功能与LIN控制交流发电机(二)
  • 灌区信息化智能管理系统解决方案
  • 计算机视觉CS231n学习(5)
  • AI开发平台行业全景分析与战略方向建议
  • C++归并排序
  • 使用 Python GUI 工具创建安全的密码短语
  • tmi8150b在VM=3.3v电压下,如何提高转速,记录
  • 高性能 Vue 应用运行时策略
  • 仓颉编程语言的match表达式
  • 《算法导论》第 12 章 - 二叉搜索树
  • 【量子计算】量子计算驱动AI跃迁:2025年算法革命的曙光
  • conda pip uv与pixi
  • SpringCloud(4)-多机部署,负载均衡-LoadBalance
  • ASP.NET三层架构成绩管理系统源码
  • HBase的异步WAL性能优化:RingBuffer的奥秘
  • 深度虚值期权合约有什么特点?