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]. 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;
}

 

posted @ 2014-11-23 08:56  Jessica程序猿  阅读(180)  评论(0编辑  收藏  举报