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

算法:用哈希求最长连续序列

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

示例 3:

输入:nums = [1,0,1,2]输出:3
/** * 用哈希求最长连续序列 * 2026年3月17日 下午6:34:00 @author jangle * @param nums * @return */ public int longestConsecutive(int[] nums) { HashSet<Integer> set = new HashSet<Integer>(); int result =0; for(int num:nums) { set.add(num); } // 注意:这里要遍历集合,而不是原数组。 for(int num:set) { if(set.contains(num-1)) { // 判断数字是否为开始值,如果num-1存在,则不是开始值。 continue; } int startNum = num; int count = 1; while(set.contains(startNum+1)) { startNum+=1; count++; } result = Math.max(result, count); } return result; }
http://www.jsqmd.com/news/497655/

相关文章:

  • SpringBoot+Vue2.x+MQTT+TDengine3.x搭建物联网设备管理平台
  • 2026年高稳定手游联运平台系统推荐指南:搭建手游平台/游戏联运平台/游戏聚合发行系统/H5联运平台系统/手游平台sdk/选择指南 - 优质品牌商家
  • Django个人主页网站搭建全指南
  • ### 2. `isTransformResponse: true` 或不设置时(默认) 返回的是转换后的数据,通常是 `res.data` 的内容:
  • 列表推导式详解与实战应用
  • 基于springboot“茶见”在线商城设计与开发(源码+精品论文+答辩PPT等资料)
  • 第 18 篇 综合项目实战:基于 RK3568 的安卓智能门禁系统,全栈开发
  • 《我从达尔文那里学到的投资知识》
  • 力扣 hot100 滑动窗口最大值 单调双端队列 java 简单题解
  • 金融交易系统高可用测试指南:构建永不宕机的安全防线
  • SGI备份还原单文件版
  • 天地图中使用html2canvas问题
  • Zen Browser:基于 Firefox 的极简开源浏览器,隐私与速度兼得
  • Linux系统文件操作简介
  • OpenClaw 核心功能解析:一文让你彻底搞懂 OpenClaw
  • Win 32 API:初步了解与应用
  • 2026年SCI论文降AI率用什么工具?实测5款后选了这个
  • 4K型护套连接器ZE0703-09(250)参数
  • hello-agent task01打卡
  • PDF文件拆分, 不限制文件大小
  • 携程任我行礼品卡回收秒变现攻略 - 京顺回收
  • 任务栏标语图片
  • 加一 - 题目笔记
  • MySQL主键设计原则与自增ID的潜在问题分析
  • 自动化测试常用函数(元素的定位)
  • 技术分享-日志链路追踪
  • 龙虾智能体不是玩具!国家安全部提醒:这3个防护步骤必做
  • (独自升级Lv.1)C++基础面试题
  • 从零学网安第四期--在kali里面制作木马程序并实现远程控制
  • 238. 除了自身以外数组的乘积