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;

}

 

你可能感兴趣的:(sequence)