最长连续序列

来源:互联网 发布:上海东行网络 编辑:程序博客网 时间:2024/04/19 07:42

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

class Solution {public:    /**     * @param nums: A list of integers     * @return an integer     */    int longestConsecutive(vector<int> &num) {        // write you code here        unordered_map<int,int>m;        int n=num.size();        int res=0;        for(int i=0;i<n;i++){            if(m[num[i]]) continue;            m[num[i]]=m[num[i]+m[num[i]+1]]=m[num[i]-m[num[i]-1]]=m[num[i]+m[num[i]+1]]+m[num[i]-m[num[i]-1]]+1;            res=max(res,m[num[i]]);        }        return res;    }};

样例

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

说明

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


0 0
原创粉丝点击