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

LeetCode 128. Longest Consecutive Sequence 题解

LeetCode 128. Longest Consecutive Sequence 题解

题目描述

给定一个未排序的整数数组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

解题思路

方法:哈希表

思路

  • 使用哈希表来存储数组中的所有元素,这样可以在 O(1) 的时间内判断一个元素是否存在
  • 遍历数组中的每个元素:
    • 如果当前元素是一个连续序列的起点(即current - 1不在哈希表中),则开始计算以当前元素为起点的连续序列的长度
    • 不断检查current + 1是否在哈希表中,如果在,继续增加长度
    • 更新最长连续序列的长度

复杂度分析

  • 时间复杂度:O(n),其中 n 是数组的长度。每个元素最多被访问两次。
  • 空间复杂度:O(n),其中 n 是数组的长度。需要使用哈希表来存储元素。

代码实现

方法:哈希表

class Solution: def longestConsecutive(self, nums: List[int]) -> int: if not nums: return 0 # 使用哈希表存储数组中的所有元素 num_set = set(nums) longest_streak = 0 for num in num_set: # 如果当前元素是一个连续序列的起点(即 num - 1 不在哈希表中) if num - 1 not in num_set: current_num = num current_streak = 1 # 不断检查 current_num + 1 是否在哈希表中 while current_num + 1 in num_set: current_num += 1 current_streak += 1 # 更新最长连续序列的长度 longest_streak = max(longest_streak, current_streak) return longest_streak

测试用例

测试用例 1:

输入:nums = [100,4,200,1,3,2]
输出:4

测试用例 2:

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

测试用例 3:

输入:nums = []
输出:0

测试用例 4:

输入:nums = [1]
输出:1

总结

本题是哈希表的经典应用问题,主要考察对哈希表的理解和使用。通过使用哈希表,我们可以在 O(1) 的时间内判断一个元素是否存在,从而高效地找到最长连续序列。

哈希表的核心思想是:将数组中的所有元素存储在哈希表中,然后遍历每个元素,当遇到一个连续序列的起点时,计算该连续序列的长度,并更新最长连续序列的长度。

这种方法不仅适用于最长连续序列问题,还可以应用于许多其他需要快速查找元素的问题。掌握哈希表的使用,对于解决这类问题非常重要。

http://www.jsqmd.com/news/571445/

相关文章:

  • Ollama 加载自定义 GGUF 模型的实战指南
  • 零域名部署实战:阿里云ECS与宝塔面板的IP直连建站指南
  • ChatGPT_JCM前端性能预算:如何为AI聊天应用设定与实现性能目标
  • 2026年装配式建筑优选指南:探寻打包箱房/民宿箱式房酒店/轻钢结构厂房/活动房/集装箱生产的实力厂商 - 深度智识库
  • 基于SpringBoot + Vue的学生学习成果管理平台
  • 2026四川国开报名培训:国开报名与考公、成人自考形成黄金三角 - 深度智识库
  • 忍者像素绘卷企业落地案例:独立游戏工作室像素资源提效50%
  • 告别重复劳动:用快马生成deerflow式工作流,提升开发效率十倍
  • WarcraftHelper:魔兽争霸III性能优化终极指南 - 10分钟打造完美游戏体验
  • OBS智能背景移除插件:无绿幕实时抠图与低光增强完整指南
  • 告别重复造轮子:用快马AI一键生成蓝桥杯单片机高效开发模块库
  • OpenArm开源机械臂:7自由度机器人平台技术实现深度解析
  • 5分钟掌握微信聊天记录永久保存技巧:让每一段对话都有迹可循
  • 关于 SQLite 数据库的基础说明及优点介绍
  • 2026年工业网闸厂家TOP推荐:安全隔离网闸/物理隔离网闸/国产化网闸/危化网闸,技术实力与市场口碑深度解析 - 品牌推荐用户报道者
  • Nomic-Embed-Text-V2-MoE实战:基于卷积神经网络(CNN)的图文多模态检索
  • 英雄联盟ChampR助手:5分钟快速上手,轻松获取专业出装符文
  • 质量管理数字化难?轻流 AI 无代码实践指南
  • GME-Qwen2-VL-2B-Instruct企业落地:MySQL数据库中的图像内容智能检索系统
  • VCS与Verdi联合仿真:从FSDB生成到波形调试全流程解析
  • SpringBoot项目里,Milvus 2.0的Collection、Partition和Shard到底该怎么设计?我的踩坑经验
  • 中合检测是不错的第三方检测机构吗,在重庆口碑咋样? - 工业设备
  • 前端实时数据流处理全攻略:从SSE到WebSocket的实战解析
  • 基于SpringBoot + Vue的学生评奖评优管理系统(角色:学生、教师、管理员)
  • 家庭下水道疏通机构怎么选择 - myqiye
  • DocRes终极指南:如何用统一模型解决5大文档图像恢复难题
  • ngx_http_init_phases
  • PyTorch 2.8镜像作品分享:使用预装FFmpeg+OpenCV完成端到端视频后处理效果
  • 为什么选择PixiJS小程序适配方案:3大商业价值解析
  • UniApp真机调试避坑大全:从安卓USB调试权限到iOS个人免费证书的完整踩坑记录