128. 最长连续序列

题目描述

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

复制代码
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

复制代码
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

解答

cpp 复制代码
class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        // 将数组先转存哈希表
        // 然后在数组中对每个元素x,在哈希表中查找 x + 1 是否存在

        // 1. 转存哈希表
        unordered_set<int> num_set;
        for(const int &num : nums)
        {
            num_set.insert(num);
        }

        int res = 0;

        for(const int &num : num_set)
        {
            // 应该判断num - 1 是否存在
            // 若存在本轮就不需要计算了
            if(!num_set.count(num-1))
            {
                int cur = num;
                int curlen = 1;

                while(num_set.count(cur + 1))
                {
                    cur += 1;
                    curlen += 1;
                }
                res = max(res, curlen);
            }
        }
        return res;
    }
};
相关推荐
ChoSeitaku7 分钟前
NO.64十六届蓝桥杯备战|基础算法-简单贪心|货仓选址|最大子段和|纪念品分组|排座椅|矩阵消除(C++)
算法·矩阵·蓝桥杯
l1n3x10 分钟前
编译原理前端-词法分析
算法·编译原理
G皮T30 分钟前
【Python Cookbook】字符串和文本(五):递归下降分析器
数据结构·python·正则表达式·字符串·编译原理·词法分析·语法解析
一只天蝎的晋升之路37 分钟前
基础算法之:动态规划
算法·动态规划
KangkangLoveNLP1 小时前
手动实现一个迷你Llama:使用SentencePiece实现自己的tokenizer
人工智能·深度学习·学习·算法·transformer·llama
luckyme_1 小时前
leetcode-代码随想录-哈希表-哈希理论基础
leetcode·哈希算法·散列表
独好紫罗兰1 小时前
洛谷题单3-P1420 最长连号-python-流程图重构
开发语言·python·算法
柯ran1 小时前
数据结构|排序算法(一)快速排序
数据结构·算法·排序算法
pipip.1 小时前
搜索二维矩阵
数据结构·算法·矩阵
uhakadotcom2 小时前
图像识别中的三大神经网络:Inception、ResNet和VGG
算法·面试·github