128. Longest Consecutive Sequenc

2017-01-09  本文已影响0人  juexin

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>& nums) {
        if(nums.size()<=0)
          return 0;
        unordered_set<int> exsitSet;
        unordered_set<int> visitedSet;
        for(int i=0;i<nums.size();i++)
          exsitSet.insert(nums[i]);
        int maxLen = 0;
        for(int i=0;i<nums.size();i++)
        {
            if(visitedSet.find(nums[i]) != visitedSet.end())
              continue;
            int count = 1;
            int left = nums[i];
            while(exsitSet.find(--left) != exsitSet.end())
            {
                count++;
                visitedSet.insert(left);
            }
            int right = nums[i];
            while(exsitSet.find(++right) != exsitSet.end())
            {
                count++;
                visitedSet.insert(right);
            }
            maxLen = max(maxLen,count);
        }
        return maxLen;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读