首页 > 其他分享 >128. 最长连续序列

128. 最长连续序列

时间:2023-12-14 15:44:23浏览次数:35  
标签:count set temp nums 序列 ms 128 最长

1.题目介绍

给定一个未排序的整数数组 \(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 <= 10^{5}\)
  • \(-10^{9} <= nums[i] <= 10^{9}\)

2.题解

2.1 哈希表(unordered_set)

思路

1.首先利用unordered_set对于数组进行去重,得到一个无重复无需set集合。

2.之后最关键的部分来了,虽然我们可以遍历set集合中的每个元素temp,每次用while循环探寻temp+1,+2是否在set集合中,
但最坏情况时间代价还是O(n^2)【外层O(n) ,内层O(n)】,没有明显的改善。
但是如果我们在判断temp的时候,先判断temp-1是否在集合中,若在,说明肯定存在更长的连续序列,跳过此次循环,否则再按上述方法探寻。

外层循环需要 O(n) 的时间复杂度,只有当一个数是连续序列的第一个数的情况下才会进入内层循环,然后在内层循环中匹配连续序列中的数,
因此数组中的每个数只会进入内层循环一次。根据上述分析可知,总时间复杂度为 O(n)

作者:力扣官方题解
链接:https://leetcode.cn/problems/longest-consecutive-sequence/solutions/276931/zui-chang-lian-xu-xu-lie-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

代码

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> ms;
        int ans;
        if (nums.size() != 0) ans = 1;
        else return 0;
        for (auto num: nums){
            ms.insert(num);
        }
        for (auto it = ms.begin(); it != ms.end(); it++){
            int temp = *it, count = 1;
            if (ms.count(temp - 1)) continue;
            while (ms.count(++temp)){
                count++;
            }
            ans = max(ans, count);
        }
        return ans;
    }
};

标签:count,set,temp,nums,序列,ms,128,最长
From: https://www.cnblogs.com/trmbh12/p/17901309.html

相关文章

  • Hadoop 数据类型及序列化
    1.Hadoop数据类型Java类型HadoopWritable类型BooleanBooleanWritableWritableWritableWritableWritableWritableWritableWritableWritableWritable2.为何Hadoop有自身序列化与反序列化Java自身的序列化除去本身Bean的数据......
  • Aapche Dubbo Java反序列化漏洞(CVE-2019-17564)
    AapcheDubboJava反序列化漏洞(CVE-2019-17564)漏洞描述ApacheDubbo是一款高性能、轻量级的开源JavaRPC服务框架。Dubbo可以使用不同协议通信,当使用http协议时,ApacheDubbo直接使用了Spring框架的org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter类做远程......
  • Unhandled exception. System.IO.IOException: The configured user limit (128) on t
    现象:Unhandledexception.System.IO.IOException:Theconfigureduserlimit(128)onthenumberofinotifyinstanceshasbeenreached,ortheper-processlimitonthenumberofopenfiledescriptorshasbeenreached.atSystem.IO.FileSystemWatcher.StartRaisi......
  • WPF限制字符串的最长显示长度,超出后尾部显示...
    在WPF中,如果你想要限制一个字符串的显示长度,并在超出后用省略号(...)表示,你可以使用TextBlock控件和设置它的TextTrimming属性。这种方法可以自动截断文本并在末尾添加省略号。<TextBlockText="{BindingYourString}"TextTrimming="CharacterEllipsis"Max......
  • 关于c++序列化
    对于一个复杂数据对象的存储和装载有很多方式,比如自定义的文本或者2进制格式,以及对应的读取和写入程序。也有一些适应力较强比较通用的方式,文本的有xml和json。尤其是xml文件查看起来比较方便。但是xml的最大问题就是装载和保存都比较慢。装载1个大文件足以把头发等白:)在c++里......
  • 基于机器学习的时间序列温度预测
    本次研究是使用GRU模型和GRU-Attention模型对长时间序列温度数据进行预测拟合,对于这两个模型有兴趣的可以去网上了解一下,首先是日数据预测,由于日数据存在缺失值需要对缺失值进行填补,在对存在缺失值的数据中我使用三次样方插值对数据进行处理,其代码如下:importpandasaspdimp......
  • 【算法】【线性表】最长单词
    1 题目给一个词典,找出其中所有最长的单词。样例1: 输入:{ "dog", "google", "facebook", "internationalization", "blabla" } 输出:["internationalization"]样例2: 输入:{ "like", "love&......
  • 【算法】【线性表】最长公共前缀
    1 题目给k个字符串,求出他们的最长公共前缀(LCP)样例1:输入:k个字符串=["ABCD","ABEF","ACEF"]输出:"A"解释:公共最长前缀是"A".样例2:输入:k个字符串=["ABCDEFG","ABCEFG","ABCEFA"]输出:"ABC&q......
  • 【算法】【线性表】最长连续序列
    1 题目给定一个未排序的整数数组num,找出最长连续序列的长度。样例1:输入:num=[100,4,200,1,3,2]输出:4解释:这个最长的连续序列是[1,2,3,4].返回所求长度42 解答publicclassSolution{/***@paramnum:Alistofintegers*@......
  • 解读传奇补丁什么是Pak文件什么是WIL序列号
    Pak文件是GOM引擎自定义图片资源格式,支持密码功能,可以使用工具包中的WIL编辑器创建修改等编辑,很多脚本命令和功能都会使用这个WIL序号,M2-查看-列表信息二这里可以自定义添加,Pak文件读取规则详细查看登录器配置器Pak文件读取规则和Pak密码需要在登录器配置中配置。什么是Pak文件Pa......