当前位置: 首页 > news >正文

最长连续序列 - LeetCode 热题 3

大家好!我是曾续缘💝

今天是《LeetCode 热题 100》系列

发车第 3 天

哈希第 3 题

❤️点赞 👍 收藏 ⭐再看,养成习惯

最长连续序列

给定一个未排序的整数数组 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
难度:💖💖

思路

如果将数组排序,那就是一个从头到尾数数的问题,但是这样做的话,排序需要 O ( n l o g ( n ) ) O(nlog(n)) O(nlog(n))的时间复杂度。
我们可以将数数的问题改为判断的形式进行。为什么需要排序,因为我们想在遍历时从一个连续序列的开头数到结尾来计算序列的长度。如果我们知道了一个序列的开头,为了判断连续,只需要判断下一个数是否在数组中存在就可以了,如此往复,直到下一个数不在数组中,就到了序列的结尾,也就可以直到序列长度了。
第二个问题是为了找到序列的开头,如何知道哪个数是序列的第一个数?也很简单,如果前一个数不在数组中,那这个数就是序列的开头第一个数了。

解题方法

将所有的数字加到哈希表中, 可以去掉多余的重复数字, 然后遍历哈希表中的每个数字, 如果是连续序列的第一个数字, 就不断地判断这个数字+1的数是否存在哈希表中, 这样找到这个连续序列的最后一个数字,进而得到这个序列的长度, 对于不是连续序列的第一个数字, 肯定就不是最长的连续序列, 跳过即可.

Code

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> se = new HashSet<>();for(int num : nums){se.add(num);}int ans = 0;for(int num : se){if(se.contains(num - 1)){continue; // 说明不是连续序列中的第一个数字, 跳过}int cur = num;while(se.contains(cur + 1)){cur++;}ans = Math.max(ans, cur - num + 1);}return ans;}
}
http://www.lryc.cn/news/318789.html

相关文章:

  • 运营模型—RFM 模型
  • YOLOv9|加入2023Gold YOLO中的GD机制!遥遥领先!
  • WRF模型运行教程(ububtu系统)--III.运行WRF模型(官网案例)
  • html和winform webBrowser控件交互并播放视频(包含转码)
  • Neo4j 批量导入数据 从官方文档学习LOAD CSV 命令 小白可食用版
  • Day43-2-企业级实时复制intofy介绍及实践
  • 2024年AI辅助研发趋势深度解析:科技革新与效率提升的双重奏
  • bash: mysqldump: command not found
  • hcie数通和云计算选哪个好?
  • 浅易理解:非极大抑制NMS
  • C语言如何进⾏字符数组的复制?
  • Linux 中搭建 主从dns域名解析服务器
  • CSS3病毒病原体图形特效
  • Tomcat Web 开发项目构建教程
  • Elasticsearch(9) gauss的使用
  • php前端和java后端数据调用流程
  • C语言从入门到熟悉------第四阶段
  • 【目标检测-数据集准备】DIOR转为yolo训练所需格式
  • Nacos为什么对于临时实例采用心跳检测,非临时实例采用主动询问?Nacos同时作为配置中心和注册中心有什么坏处?为什么Nacos可以抗住那么高的注册?
  • 【NLP】如何实现快速加载gensim word2vec的预训练的词向量模型
  • 前端实例:页面布局1(后端数据实现)
  • 【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras
  • 【设计模式】Java 设计模式之享元模式(Flyweight)
  • 异次元发卡源码系统/荔枝发卡V3.0二次元风格发卡网全开源源码
  • 腾讯春招后端一面(八股篇)
  • “风口”上的量化大厂“绣球”抛向中低频人才
  • obdiag如何实现一键采集20+故障场景的诊断信息——《OceanBase诊断系列》之九
  • Cookie和Session的获取方法
  • 旅游市场游客满意度调查报告
  • 为什么选用python开发web?