[LeetCode] 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) {
        unordered_map<int, bool> exist;
        for(auto i:num)
            exist[i] = true;
        int longest = 0;
        for(auto i:num)
        {
            int left = i - 1, right = i + 1;
            while(exist[left])
                exist[left--] = false;
            while(exist[right])
                exist[right++] = false;
            longest = max(longest, right-left-1);
        }
        return longest;
    }
};


你可能感兴趣的:([LeetCode] Longest Consecutive Sequence)