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

【leetocde】128. 最长连续序列

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

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

示例 1:

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

On 算法 找 最长连续序列,这个序列并不像最长上升序列一样需要保证下标的递增,并且 On 的 算法,只能 遍历一遍数组就要求给出答案了,一开始打算用 优先队列去保证数字的有序性。后面看到hash 也能做,这个就是真 O1了。用空间换时间是常见降低时间复杂度的手段。

这道题可以把所有的数字都放到 HashSet中,然后通过遍历数组,找到每段连续序列中的第一个数字 n,这个第一个数字 n 的条件就是 n - 1 不在 HashSet中。然后不断找后面的连续数字,直到没有位置。统计这样的所有连续序列,找出最大长度。

class Solution {public int longestConsecutive(int[] nums) {if(nums.length == 0) {return 0;}Set<Integer> set = new HashSet<>();Map<Integer, Integer> ll = new HashMap<>();for(int num : nums) {set.add(num);}int ans = 1;for(Integer num : set) {if(!set.contains(num - 1)) {int cur = num;while(set.contains(cur + 1)) {cur = cur + 1;}ans = Math.max(ans, cur - num + 1);} else {continue;}}return ans;}
}
http://www.lryc.cn/news/180984.html

相关文章:

  • 【Vue3】动态 class 类
  • 【Redis】redis基本数据类型详解(String、List、Hash、Set、ZSet)
  • ubuntu源码安装aria2
  • 【多任务案例:猫狗脸部定位与分类】
  • .Net 锁的介绍
  • Office 2021 小型企业版商用办公软件评测:提升工作效率与协作能力的专业利器
  • Monkey测试
  • wzx-jmw:NFL合理,但可能被颠覆。2023-2024
  • 密码技术 (5) - 数字签名
  • php实战案例记录(10)单引号和双引号的用法和区别
  • 嵌入式Linux应用开发-基础知识-第十九章驱动程序基石②
  • trycatch、throw、throws
  • 问 ChatGPT 关于 GPT 的事情:数据准备篇
  • leetcode_17电话号码的组合
  • 记录使用vue-test-utils + jest 在uniapp中进行单元测试
  • 《C和指针》笔记30:函数声明数组参数、数组初始化方式和字符数组的初始化
  • VBA技术资料MF64:遍历单元格搜索字符并高亮显示
  • 一键智能视频编辑与视频修复算法——ProPainter源码解析与部署
  • Flutter开发环境的配置
  • 【超详细】Wireshark教程----Wireshark 分析ICMP报文数据试验
  • Linux命令(92)之rm
  • Mysql主从复制数据架构全面解读
  • ios证书类型及其作用说明
  • 警告-Ubuntu提示W: Possible missing firmware xxx解决方法
  • 有时候,使用 clang -g test.c 编译出可执行文件后,发现 gdb a.out 进行调试无法读取符号信息,为什么?
  • UG\NX二次开发 信息窗口的一些操作 NXOpen/ListingWindow
  • macbook电脑磁盘满了怎么删东西?
  • 解释 RESTful API,以及如何使用它构建 web 应用程序
  • qml使用c++自定义listmodel数据
  • cf 解题报告 01