题目链接
英文链接:https://leetcode.com/problems/longest-consecutive-sequence/
中文链接:https://leetcode-cn.com/problems/longest-consecutive-sequence/
题目详述
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
1 | 输入: [100, 4, 200, 1, 3, 2] |
题目详解
- 运用
Map
存储元素所在连续序列的长度。 - 遍历数组,如果
map
中存在当前元素num
,表示之前计算过,跳过。如果不存在则进行下一步计算。 - 计算
num - 1
所在连续序列的长度和num + 1
所在连续序列的长度,进行合并操作,更新结果,更新当前元素与两个端点的所在连续序列的长度。
1 | public class LeetCode_00128 { |
- 首先把所有元素添加到
HashSet
。 - 遍历数组,在
HashSet
中删除当前元素,删除前面与它构成连续序列的元素,删除后面与它构成连续序列的元素,并统计这个区间长度来更新最大值。这一步进行的前提是HashSet
中存在当前元素,如果不存在,代表之前已经统计过,直接跳过。
1 | public class LeetCode_00128 { |