leetcode[128]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.

class Solution {

public:

    int longestConsecutive(vector<int> &num) {

        if(num.empty())return 0;

        unordered_set<int> all;

        unordered_set<int> visited;

        for(int i=0;i<num.size();i++)

           all.insert(num[i]);

        int max=0;

        for(int i=0;i<num.size();i++)

        {

            if(visited.find(num[i])!=visited.end())continue;

            int count=1;

            visited.insert(num[i]);

            int left=num[i];

            while(all.find(--left)!=all.end())

            {

                count++;

                visited.insert(left);

            }

            int right=num[i];

            while(all.find(++right)!=all.end())

            {

                count++;

                visited.insert(right);

            }

            max=max>count?max:count;

        }

        return max;

    }

};

 

你可能感兴趣的:(LeetCode)