You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于LeetCode最长连续序列解法时间复杂度的疑问

关于最长连续序列解法的时间复杂度分析

你的这个解法的时间复杂度是O(n),绝对不是O(n²),核心原因是每个元素只会被处理两次:一次是遍历数组时的检查,一次是在统计连续序列时的访问,不会有重复的冗余操作。

咱们拿你说的输入nums = [5,4,3,2,1]具体拆解:

  • 第一步把数组转成集合,这一步是O(n)的时间开销。
  • 然后遍历数组中的每个元素:
    • 遍历到5时,检查5-1=4在集合里,直接跳过,不做后续统计。
    • 遍历到4时,检查4-1=3在集合里,跳过。
    • 遍历到3时,检查3-1=2在集合里,跳过。
    • 遍历到2时,检查2-1=1在集合里,跳过。
    • 遍历到1时,检查1-1=0不在集合里,这时候才会触发连续序列的统计:依次找1+1=2、2+1=3、3+1=4、4+1=5,直到5+1=6不在集合里为止。这一步会访问1、2、3、4、5这五个元素。

你算一下总操作次数:遍历5个元素(5次)+ 统计时访问5个元素(5次),总共10次,和数组长度n成正比,是线性时间。

本质上,这个解法的关键逻辑是只从连续序列的起点开始统计,那些属于序列中间的元素会直接被跳过,不会进入内层的循环。每个元素要么作为起点被处理一次,要么作为序列的一部分被统计一次,不会被重复处理。所以不管输入是有序还是无序的,整体的时间复杂度都是严格的O(n),完全符合题目要求的时间限制。

内容的提问来源于stack exchange,提问作者user24982840

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:37:05