128. 最长连续序列

2020-05-30

1.题目描述

最长连续序列

2.题解

在这里我使用的是map,首先将所有的数存在map中,然后从某一个数出发,看和其连续的数一共有几
个,避免重复计算,我另外又用了map来标记这个数有没有访问过。

3.代码

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        int l=nums.size();
        if (!l) return 0;
        map<int,bool> mymap;
        map<int,bool> f;
        for (int i=0;i<l;i++) {
            mymap[nums[i]]=true;
            f[nums[i]]=false;
        }

        int res=0;
        for (int i=0;i<l;i++){
            if (!f[nums[i]]){
                int cnt=1;
                int tmp=nums[i]-1;
                while (mymap.count(tmp)){
                    f[tmp]=true;
                    tmp--;
                    cnt++;
                }
                tmp=nums[i]+1;
                while (mymap.count(tmp)){
                    f[tmp]=true;
                    tmp++;
                    cnt++;
                }
                res=max(res,cnt);
            }
        }
        return res;
    }
};

你可能感兴趣的:(LeetCode-并查集,leetcode,算法)