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

LeetCode hot100——最长连续序列

接下来完成 LeetCode hot100 哈希部分的第三题。

最长连续序列

128. 最长连续序列 - 力扣(LeetCode)

想象一下,有一群人站在广场上,每个人胸前都有一个数字编号。你的任务是找到最长的一串连续数字(比如 101, 102, 103, 104)。

但是这题有个极其苛刻的要求:时间复杂度必须为

这意味着:

  1. 不能排序:因为排序最快也要

  2. 不能嵌套循环直接找:如果你对每个数都去暴力往后数,很可能退化成

策略:只从“队长”开始数

如果你是队长,意味着你前面没有兄弟了。

  • 怎么判断你是不是 101 这支队伍的队长?

  • 很简单:看广场上有没有人编号是100。如果没有 100,你就是队长!

如果你是队长,你才开始点名:“102 在吗?103 在吗?104 在吗?...”如果你不是队长(比如你是 102),你就直接闭嘴:因为 101 那个队长自然会去点你的名,你不需要自己跳出来数。

为了实现,我们需要一种能瞬间)判断某个人在不在场的能力。没错,就是Set(集合)

第一步:全部入库

把数组里所有的数字都扔进一个Set。这一步是为了去重,并且让我们能在时间内查到某个数字是否存在。

第二步:遍历与判断

遍历Set里的每一个数字num

  1. 寻找“队长”:检查Set里是否有num - 1

    • 如果有,说明当前数字只是某个序列的中段,跳过它(别急,它的队长会来找它的)。

    • 如果没有,恭喜!num就是一个序列的起始数字(队长)

  2. 队长点名

    从这个num开始,不停地在Set里找num + 1,num + 2...

    直到找不到了为止,记录下这支队伍的总长度。

  3. 更新记录:拿当前队伍长度去更新全局的“最长长度”。

深度思考:为什么它是

你可能会问:“点名的时候不是也有循环吗?嵌套循环难道不是吗?”

这就是此算法最精妙的地方:

  • 每一个数字,只有在它是“队长”时,才会触发点名循环。

  • 如果它不是队长,它只会被if判断一次就跳过了。

  • 实际上,每个数字最多只会被进入点名循环一次

就好比广场上 100 个人,每个人只会被点名一次,虽然有嵌套感,但总工作量依然是,也就是

最终代码如下:

function longestConsecutive(nums: number[]): number { const set = new Set<number>(nums); let maxLen = 0; for(const num of set){ if(!set.has(num-1)){ let currentLen=1; let currentNum = num; while(set.has(currentNum+1)){ currentLen++; currentNum++; } maxLen=Math.max(maxLen,currentLen); } } return maxLen; };


接下来再来看看 ACM 机制下要如何书写。

ACM

引入 Node.js 的文件系统模块,用于读取输入:

const fs = require("fs");

主函数和调用:

function main(){ try{ const input = fs.readFileSync(0,'utf-8').trim() if(!input) return const str = input.replace(/^nums\s*=\s*/,'') const jsonStr=JSON.parse(str) const result = longestConsecutive(jsonStr) console.log(result) }catch(err){ console.error(err) } } main()

input.txt:

nums = [0,3,7,2,5,8,4,6,0,1]

然后运行:

node solution.js < input.txt
http://www.jsqmd.com/news/536844/

相关文章:

  • ai-news-2026-03-25
  • 2026年热门的铠装网线/浙江工业网线/浙江屏蔽网线/超五类网线实力工厂推荐 - 品牌宣传支持者
  • 2026最新Java面试,必问的十个AI面试题!标准答案+实战避坑,先码住!
  • ChatGPT生成Word文档实战指南:从API调用到格式优化
  • 微信小程序连接MQTT避坑指南:从域名备案到ClientId冲突,这些雷我都帮你踩过了
  • weixin259基于微信小程序的医院综合服务平台的设计与实现ssm(文档+源码)_kaic
  • 2026丨科学大百科:Java面试时问在项目开发时遇到最难的是什么问题,?怎么解决的?
  • 不只是漏洞检测:用Joern+Neo4j在Windows下可视化你的C项目代码结构图
  • OpenClaw+GLM-4.7-Flash会议纪要:语音转文字与要点提取
  • 2026北京报废资产回收优质服务商推荐榜:防爆报废资产回收、防腐报废资产回收、低噪声报废资产回收、废金属回收、废金属回收选择指南 - 优质品牌商家
  • OpenClaw+nanobot隐私计算:本地化处理敏感信息方案
  • Yarle终极指南:3分钟完成Evernote到Markdown的无损迁移
  • HunyuanVideo-Foley效果展示:AI生成音效在Audition中后期处理兼容性验证
  • 2026大型人工气候室优质品牌推荐指南:小型人工气候室/恒温恒湿人工气候室/恒温恒湿植物工厂/恒温恒湿种子资源库/选择指南 - 优质品牌商家
  • 2026年质量好的浙江铠装网线/B1阻燃网线源头厂家推荐 - 品牌宣传支持者
  • RWKV7-1.5B-G1A效果展示:多风格创意文本生成作品集
  • OpenClaw创意应用:Qwen3-VL:30B生成飞书生日祝福海报
  • Element UI表格fixed列错位?5分钟搞定el-table滚动条与固定列对齐问题
  • 2026年质量好的模块化配线架/六类配线架公司选择指南 - 品牌宣传支持者
  • 想拥有专属的桌面宠物伙伴吗?DyberPet开源框架让个性化养成触手可及
  • Qwen3-VL-8B部署避坑指南:消费级GPU配置与常见问题解决
  • macOS下OpenClaw深度配置:GLM-4.7-Flash模型性能调优
  • OpenClaw技能扩展指南:基于Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF开发自定义自动化
  • AI原生应用自适应界面,创造流畅交互体验
  • OpenClaw远程控制:nanobot镜像实现安全的外部访问
  • Llama-3.2V-11B-cot应用场景:文化遗产数字化中壁画破损区域逻辑复原
  • 【观察】紫光云发布行业垂类大模型,打造AI落地“三位一体”新范式
  • OpenClaw+nanobot极限测试:7天连续运行的稳定性报告
  • 数据科学好帮手:OpenClaw+GLM-4.7-Flash自动化分析工作流
  • ROS小车导航避坑指南:move_base + AMCL + TEB 配置全流程与常见问题排查