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

最长连续序列(Longest Consecutive Sequence)

目录

  1. 题目
  2. 伪代码
  3. Python 实现
  4. 算法复杂度
  5. 核心知识点
  6. 流程示例
  7. 常见误区

题目

给定一个未排序的整数数组 nums,找出数字连续的最长序列(元素不要求在原数组中连续)的长度。
要求:设计并实现 时间复杂度 O(n) 的算法。

示例

输入输出解释
[100,4,200,1,3,2]4最长序列 [1,2,3,4]
[0,3,7,2,5,8,4,6,0,1]9[0,1,2,3,4,5,6,7,8]
[1,0,1,2]3[0,1,2]

伪代码

算法 longestConsecutive(nums)输入:整数数组 nums输出:最长连续序列长度1  S ← 将 nums 转为集合          // 去重 + O(1) 查找
2  maxLen ← 0                    // 全局最长长度
3  对于 num 属于 S 执行            // 遍历每个唯一值
4      若 num-1 ∉ S 则            // 仅当 num 是“起点”才进入内循环
5          cur ← num
6          len ← 1
7          当 cur+1 ∈ S 执行       // 向后扩张
8              cur ← cur+1
9              len ← len+1
10         maxLen ← max(maxLen, len)
11  返回 maxLen

Python 实现

from typing import Listclass Solution:def longestConsecutive(self, nums: List[int]) -> int:# 1. 去重 + 哈希,保证每个数字只处理一次num_set = set(nums)          # O(n) 空间longest_streak = 0           # 2. 全局最优解# 3. 遍历集合,每个元素只访问一次外循环for num in num_set:# 4. 【贪心剪枝】只有 num 是序列起点才进入内循环#    这样确保每条连续段只被处理一次if num - 1 not in num_set:current_num = num    # 5. 当前段起点current_streak = 1   # 6. 当前段长度# 7-9. 向后扩张,集合查找 O(1)while current_num + 1 in num_set:current_num += 1current_streak += 1# 10. 更新全局最优longest_streak = max(longest_streak, current_streak)# 11. 返回结果return longest_streak

算法复杂度

维度结论证明
时间O(n)每个数字最多被访问 2 次(外循环 1 次,内循环作为 cur+1 1 次),集合查询 O(1) → 总时间 2n·O(1)=O(n)。
空间O(n)哈希集合 num_set 存储所有唯一元素,最坏 n 个。

核心知识点

名称作用本题体现
哈希表 / 集合近似 O(1) 查询快速判断 num±1 是否存在
贪心策略只做“必要”工作仅当 num-1 不存在时才以 num 为起点,避免重复扫描
起点剪枝保证每条连续段只处理一次将总体复杂度从 O(n²) 降到 O(n)
空间换时间用额外内存换取查询速度set 存储全部元素

流程示例

输入nums = [100, 4, 200, 1, 3, 2]
集合S = {1, 2, 3, 4, 100, 200}

  • 起点判断:
    • 1 是起点 → 扩张得 [1,2,3,4],长度 4
    • 100 是起点 → 仅 [100],长度 1
    • 200 是起点 → 仅 [200],长度 1

结果maxLen = 4


常见误区

误区后果
直接排序时间升至 O(n log n),不满足题目要求
不判起点每个元素都触发内循环,复杂度退化至 O(n²)
忽略去重重复数字导致内循环重复统计,结果可能偏大
http://www.dtcms.com/a/479916.html

相关文章:

  • 南宁建设信息网站单网页网站制作
  • 国网商旅云网站地址做网站文案用哪个软件
  • 产品做推广一般上什么网站网站建设php有哪些
  • 做装饰工程的在什么网站投标手机能用的网站
  • 血玥珏-文本段落处理器 1.0.0.1
  • 数据库自增 ID 耗尽?4 个落地级方案,从新表到老系统全覆盖
  • wordpress 手机端打开速度慢seo服务公司深圳
  • python线程间怎么通信
  • 重庆有名的网站建设商城网站建设课设
  • 网站建设招标需求wordpress卡死了
  • 昆明公司建设网站永久免费网站建商城
  • sql练习-4
  • 网站都是用什么编写的系统开发文档
  • 做网站建设的windows优化大师的特点
  • win8风格 网站模板可以做业务推广的网站有哪些
  • 安吉网站设计自己怎么制作logo图标
  • 深圳专业做网站排名哪家好家乡网页设计教程
  • 专业手机网站公司哪家好学校网站建设源代码
  • AI 超级智能体全栈项目阶段五:RAG 四大流程详解、最佳实践与调优(基于 Spring AI 实现)
  • 网站做管理后台需要知道什么软件开发和编程的区别
  • 网站源码下载插件泛华建设集团有限公司网站
  • 深圳网站建设公司报价单html入门
  • 商业网站的建设与制作佛山营销网站建设
  • 地方门户网站建设方案游戏编辑器
  • 山东住房和城乡建设厅网站登陆贵阳网站建设有限公司
  • 2.如何使用 DeepSeek 帮助自己的工作
  • 网站开发+.net+开源免费seo推广公司
  • 怎么样增加网站权重如何建立网站视频教程
  • 网站建设服务费 印花税广州网站站建设培训
  • 建设网站怎样提要求网站分类目录