Skip to content

Commit 7c0fb0f

Browse files
authored
Update 128.longest-consecutive-sequence.md
1 parent 01b82a9 commit 7c0fb0f

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

problems/128.longest-consecutive-sequence.md

+9-2
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,17 @@ return Math.max(count, maxCount);
6363
问题,内部我们`查找是否存在当前值的邻居元素`的过程如果使用数组,时间复杂度是 O(n),
6464
那么总体的复杂度就是 O(n^2),完全不可以接受。怎么办呢?
6565

66-
我们换个思路,用空间来换时间。比如用类似于 hashmap 这样的数据结构优化查询部分,将时间复杂度降低到 O(1), 代码见后面`代码部分`
66+
我们换个思路,用空间来换时间。比如用类似于 hashmap 这样的数据结构优化查询部分,将时间复杂度降低到 O(1)。
67+
68+
代码上,我们先将 nums 存到哈希表中。然后找所有序列的起点 x, 递增 x 尝试**从 x 出发**能达到的最大长度。
69+
70+
我们怎么知道哪些数字是序列的出发点呢? 比如数组 [1, 3, 2] 我们怎么知道 1 是起点呢? 我们只需要判断 x - 1 是否在哈希表中即可。
71+
72+
代码见后面`代码部分`
6773

6874
## 关键点解析
6975

76+
- 从所有的序列起点(终点也行)开始尝试
7077
- 空间换时间
7178

7279
## 代码
@@ -108,7 +115,7 @@ class Solution:
108115
ans = 0
109116
for a in A:
110117
t = a
111-
# if 的作用是剪枝
118+
# 说明 t 是连续序列的开头元素。加这个条件相当于剪枝的作用,否则时间复杂度会退化到 N ^ 2
112119
if t + 1 not in seen:
113120
while t - 1 in seen:
114121
t -= 1

0 commit comments

Comments
 (0)