侧边栏壁纸
博主头像
Hope博主等级

努力赚钱的工科研究生

  • 累计撰写 362 篇文章
  • 累计创建 129 个标签
  • 累计收到 5 条评论
标签搜索

LeetCode 128. 最长连续序列

Hope
2022-02-25 / 0 评论 / 0 点赞 / 239 阅读 / 423 字
温馨提示:
本文最后更新于 2022-02-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

LeetCode 128. 最长连续序列

思路:

开一个哈希表,存nums的所有元素,然后找到每段子序列的头元素,开始统计长度,统计的时候需要删除哈希表中的元素,这样可以保证只遍历一次,算法是O(n)的。

代码:

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> h;

        for(auto x:nums) h.insert(x);
        int res=0;

        for(int i=0;i<nums.size();i++){
            if(h.count(nums[i]) && !h.count(nums[i] - 1)){
                int y=nums[i];
                h.erase(nums[i]);
                while(h.count(y+1)){
                    h.erase(y);
                    y++;
                }
                res=max(res,y-nums[i]+1);
            }
        }
        return res;
    }
};

0

评论区