Longest Consecutive Sequence
LeetCode上面这道题是求最长连续子序列。换种说法就是求公差为1的最长等差数列。
题目描述
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.
分析:
需要注意的是时间复杂度要求是O(n),所以排序后再处理那种方法是不可行的。我们可以就用数组中的元素作为key建立hash表,然后直接循环遍历找当前元素val的,val-1,val+1。
代码:
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
int n=nums.size();
if(n==0 || n==1){
return n;
}
int longest=1,val,cur