Longest Consecutive Sequence

简介: 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].

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.

C++代码实现:

#include<iostream>
#include<vector>
#include<set>
using namespace std;

class Solution
{
public:
    int longestConsecutive(vector<int> &num)
    {
        if(num.empty())
            return 0;
        set<int> st;
        int len=1;
        for(int i=0; i<(int)num.size(); i++)
            st.insert(num[i]);
        auto k=st.begin();
        k++;
        int count=1;
        for(; k!=st.end(); k++)
        {
            auto tmp=k;
            tmp--;
            if(*tmp+1!=*k)
            {
                if(count>len)
                    len=count;
                count=1;
                continue;
            }
            count++;
        }
        if(count>len)
            len=count;
        return len;
    }
};

int main()
{
    Solution s;
    vector<int> vec= {9,1,4,7,3,-1,0,5,8,-1,6};
    cout<<s.longestConsecutive(vec)<<endl;
}

 

相关文章
|
算法
LeetCode 128. Longest Consecutive Sequence
给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。
104 0
LeetCode 128. Longest Consecutive Sequence
LeetCode 424. Longest Repeating Character Replacem
给你一个仅由大写英文字母组成的字符串,你可以将任意位置上的字符替换成另外的字符,总共可最多替换 k 次。在执行上述操作后,找到包含重复字母的最长子串的长度。
120 0
LeetCode 424. Longest Repeating Character Replacem
|
存储
LeetCode 329. Longest Increasing Path in a Matrix
给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。
91 0
LeetCode 329. Longest Increasing Path in a Matrix
|
算法
LeetCode 300. Longest Increasing Subsequence
给定一个无序的整数数组,找到其中最长上升子序列的长度。
73 0
LeetCode 300. Longest Increasing Subsequence
【1096】Consecutive Factors (20 分)
【1096】Consecutive Factors (20 分) 【1096】Consecutive Factors (20 分)
140 0
uva 10706 - Number Sequence
点击打开链接uva 10706 题目意思:    有一个数组 s[1] = 1 , s[2] = 1 2 , .......s[k] = 1....k,要求给定一个n表示数组的第几位,要求这个第几位是什么数。
968 1
|
算法 C#
算法题丨Longest Consecutive Sequence
描述 Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
1135 0
1104. Sum of Number Segments (20) consecutive subsequence 每个数出现的次数
Given a sequence of positive numbers, a segment is defined to be a consecutive subsequence.
999 0