Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.
Your algorithm should run in O(n) complexity.
解法1:
复杂度要求比较高,算来算去能用的也只有HashMap了。这个解法不太常见,用一个map存储一个range。
对于任意一个数,low和high都是数字本身。然后在map之内寻找下限和上限。寻找到之后更新res。
C++
Java
解法2:
这个解法清楚多了,首先把所有数据加入一个hashset. 之后对于每一个数,往下以及往上找到所有在set中的数据。 然后更新一下range。
Java
解法3: DFS –> StackOverflow
这个解法空间浪费很严重。。不过也是一种思路。leetcode上会stack overflow
|
|