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

【LeetCode】【算法】128. 最长连续序列

LeetCode 128. 最长连续序列

题目描述

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例:
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

思路

  1. 用一个Set将输入数组里的元素全部存起来
  2. 遍历这个Set的Iterator,如果!set.contains(i-1),就开始计算序列长度(之所以要做这个判断,是因为如果set.contains(i-1)的话,可以避免重复计算)
  3. 计算序列长度的方法是使用while循环,条件为set.contains(i+1),则当前序列长度++,i++,直到set中不再包含连续的数字时结束。最后比较这次计算的序列长度最长序列长度,得到最终结果:max=Math.max(cur_count, max);

代码

class Solution {public int longestConsecutive(int[] nums) {Set<Integer> set = new HashSet<>();for (int num : nums) {set.add(num);}int max = 0;Iterator<Integer> iterator = set.iterator();while (iterator.hasNext()) {int i = iterator.next();if (!set.contains(i-1)){int cur_count = 1;while (set.contains(i+1)){cur_count++;i++;}max = Math.max(cur_count, max);}}return max;}
}
http://www.lryc.cn/news/478932.html

相关文章:

  • 【dvwa靶场:XSS系列】XSS (Reflected)低-中-高级别,通关啦
  • imu_tk配置教程(锁死ubuntu18.04,不要22.04)
  • Vue 的 keep-alive
  • linux进程的状态之环境变量
  • 【系统架构设计师】预测试卷一:论文(包括4篇论文主题对应的写作要点分析)
  • 东胜物流软件 AttributeAdapter.aspx SQL 注入漏洞复现
  • 2024年网鼎杯青龙组|MISC全解
  • 查询引擎的演变之旅 | OceanBase原理解读
  • 轻松理解操作系统 - Linux 软硬链接是什么?
  • Redis - 数据库管理
  • VBA02-初识宏——EXCEL录像机
  • Unity网络开发基础(part5.网络协议)
  • forEach可以遍历不可枚举属性吗
  • Docsify文档编辑器:Windows系统下个人博客的快速搭建与发布公网可访问
  • 索引基础篇
  • 多进程与多线程分不清?
  • 【零基础学习CAPL】——XML工程创建与使用详解
  • 市场营销应该怎么学?
  • 作为一个前端开发者 以什么步骤学习后端技术
  • 大数据新视界 -- 大数据大厂之经典案例解析:广告公司 Impala 优化的成功之道(下)(10/30)
  • yolov8涨点系列之Concat模块改进
  • JavaAPI(1)
  • 【大模型】通过Crew AI 公司的崛起之路学习 AI Agents 的用法
  • Python接口自动化测试实战
  • 前端Web用户 token 持久化
  • 【测试工具篇一】全网最强保姆级教程抓包工具Fiddler(2)
  • ONLYOFFICE 文档8.2更新评测:PDF 协作编辑、性能优化及更多新功能体验
  • 【WebRTC】视频采集模块中各个类的简单分析
  • 【大模型系列】Grounded-VideoLLM(2024.10)
  • EV录屏好用吗?盘点2024年10款专业好用的录屏软件。