128. 最长连续序列
算法
-
使用哈希集合 (
unordered_set
):- 首先将数组中的所有元素存入一个哈希集合
s
中,便于快速判断某个数字是否存在
- 首先将数组中的所有元素存入一个哈希集合
-
遍历数组,寻找序列起点:
- 对于每个数字
start
,如果start - 1
不存在于集合中,说明它是某个连续序列的起点 - 从这个起点开始,逐步检查
start + 1
,start + 2
,…
是否存在于集合中,计算连续序列的长度
- 对于每个数字
-
优化:删除已访问元素:
- 在遍历过程中,一旦某个数字被处理,可以从集合中删除,避免后续重复处理
-
更新结果:
- 记录所有连续序列的最大长度
复杂度分析
时间复杂度
- 构建哈希集合:
O(n)
,其中n
是数组长度 - 遍历数组:
- 每个元素最多被访问两次(一次作为序列起点,一次作为序列中元素)
- 总复杂度为
O(n)
- 总时间复杂度为
O(n)
空间复杂度
- 使用了一个哈希集合存储数组中的所有元素,空间复杂度为
O(n)
C++ 代码
|
|
Python 代码
|
|
Go 代码
|
|
JavaScript 代码
|
|