最长连续序列

来源:互联网 发布:vpn软件 编辑:程序博客网 时间:2024/05/01 23:38

给定一个未排序的整数数组,找出最长连续序列的长度。

样例

给出数组[100, 4, 200, 1, 3, 2],这个最长的连续序列是 [1, 2, 3, 4],返回所求长度 4

说明 要求你的算法复杂度为O(n)

class Solution {public:    /**     * @param nums: A list of integers     * @return an integer     */    int longestConsecutive(vector<int> &num) {        // write you code here        int n = num.size();        int result = 0;        set<int> buf;        for (int i = 0; i < n; i++)        {            buf.insert(num[i]);        }        for (int i = 0; i < n; i++)        {            int left = maxLen(0, num[i], buf);            int right = maxLen(1, num[i]+1, buf);            if (left+right > result)            {                result = left + right;            }        }        return result;    }private:    int maxLen(int flag, int val, set<int> &buf)    {        int result = 0;        while (buf.find(val) != buf.end())        {            result++;            buf.erase(val);            if (flag == 0)            {                val--;            }            else            {                val++;            }        }        return result;    }};


0 0
原创粉丝点击