leetcode 128. Longest Consecutive Sequence

来源:互联网 发布:淘宝港澳台运费设置 编辑:程序博客网 时间:2024/06/06 04:00

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.


思路就是把所有数存到map中,遍历数组每一个值,然后向左右找,再把两边的位置相减!

有一个关键是,每次找到,需要把map中这个元素删掉,这样避免之后重复查找!*****一旦要求时间,就想到空间换时间,用map查找快!


class Solution {public:    int longestConsecutive(vector<int>& nums)     {        map<int,int> nummap;               for (auto it : nums)            nummap[it]++;               int ret = 0;        for(auto i : nums)        {            //l            int _l = i - 1;            while(1)            {                if (nummap.find(_l) != nummap.end())                     nummap.erase(_l--);                else                    break;            }            //r;            int _r = i + 1;            while(1)            {                if (nummap.find(_r) != nummap.end())                    nummap.erase(_r++);                else                    break;            }            ret = max(_r - _l - 1, ret);       }           return ret;          }};


原创粉丝点击