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

《python算法与数据结构2000讲》0128. 最长连续序列 描述:给定一个未排序的整数数组 nums。 要求:找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。并且要用时间复杂度为 � ( � ) O(n) 的算法解决此问题。 阅读详情

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

CAPL编程入门:从零开始掌握汽车通信脚本语言 本文详细介绍了CAPL编程的基础知识,从开发环境搭建到核心语法精要,再到总线通信实战和高级调试技巧。CAPL作为汽车通信脚本语言,专为CAN、LIN等网络协议设计,帮助工程师高效完成车载网络测试。通过实战案例和性能优化建议,读者可以快速掌握CAPL编程技能。 阅读详情

相关推荐

【Pandas总结】第二节 Pandas 的数据读取_pd.read_csv()的使用详解(非常全面,推荐收藏)

pandas对纯文本的读取提供了非常强力的支持,参数有四五十个。这些参数中,有的很容易被忽略,但是在实际工作中却用处很大。

weixin_47139649的博客 11万+

[LeetCode]128. 最长连续序列(java实现)hashset

[LeetCode]128. (java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 思路(): 3. 解法 ---------------------------------------------------解法---------------------------------------------------: 可能存在的问题: 4. 可能有帮助的前置习题 5. 所用

cloud的博客 1610

SAC安装与相关库文件(.so)的安装

摘要 SAC: Seismic Analysis Code 是用于地震信号处理的一套软件。 本文将介绍SAC的安装,以及安装时遇到的一些问题。主要是一些动态库(lib**.so)找不到的问题。 本文的环境 64位的 Ubuntu 16.04 64位的系统是安装出现问题的主要原因 1. SAC获取与安装 SAC 的安装,只需要解压,然后修改环境变量即可!!!不需要任何编译!!! 1.1. SAC 获取与解压 SAC软件获取地址:http://ds.iris.edu/ds/nodes/dmc/forms/s.

WangCY的博客 4333

Leet Code 128-最长连续序列【Java】【哈希法】

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

一米九的博客 367

从QEvent到系统响应:EC如何成为硬件事件的隐形信使

本文深入解析嵌入式控制器(EC)如何作为硬件事件的隐形信使,通过QEvent机制将按键、合盖等物理事件转换为SCI信号,并经由ACPI架构触发操作系统响应。EC与BIOS紧密协作,实现了从底层硬件到系统层面的高效事件传递,是嵌入式开发和系统优化的关键技术。

yellow的专栏 651

手把手教你学Simulink——基于电机驱动系统的场景实例:轮毂电机在电动汽车中的分布式驱动控制仿真

本文详细介绍了基于MATLAB/Simulink和Simscape Electrical的电动汽车轮毂电机分布式驱动控制系统建模方法。内容包括系统结构设计(轮毂电机、逆变器、控制器等模块)、完整的建模过程(从基础模块导入到车辆动力学建模)、控制器设计与转矩分配策略实现,以及仿真参数设置与结果分析。通过仿真验证了该分布式驱动系统在速度跟踪、转弯性能等方面的优异表现,为电动汽车驱动系统的研究与开发提供了有效的仿真验证平台。文中还提供了相关代码示例和资料推荐,是学习Simulink电机控制系统建模的实用指南。

MHD0815的博客 4914

[LeetCode]128. 最长连续序列(java实现)

[LeetCode]128. 最长连续序列(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 解法1:首先能想到一个解法是暴力法,即用暴力循环;时间复杂度为O(n2),题目要求用O(n)的时间复杂度。 解法2:使用哈希表。主要思路是用哈希集合存储数组的值(哈希表有去重的功能),完成去重,再遍历查找哈希集合中的最长子序列。 整个算法最妙的地方在于判断了是否存在前置元素,因此时间

cloud的博客 441

基于 YOLOv26 的遥感图像目标检测系统:从原理到模型

本文介绍了基于YOLOv26的遥感图像目标检测系统。YOLOv26凭借端到端设计、轻量化架构和小目标优化能力,有效解决了遥感图像中多尺度目标、复杂背景、小目标检测等挑战。系统采用CSPDarknet骨干网络和FPN+PAN特征融合模块,通过MuSGD优化器和改进损失函数提升训练效果。文章详细阐述了数据预处理、模型训练流程和优化技巧,包括Tile推理和混合精度训练。系统支持多种部署方式,在CPU上推理速度提升43%,能实现高精度、实时性的遥感目标检测,适用于城市规划、农业监测等场景。

一键难忘的博客 565

leetcode128. 最长连续序列(java)

不是很难 但是写错了一点 复杂度不是o(n) 感谢大佬题解 力扣 class Solution { public int longestConsecutive(int[] nums) { int ans = 0; Set<Integer> set = new HashSet<>(); for(int num : nums) set.add(num); for(int x : set){ ..

qq_45908682的博客 1046

《UDS协议从入门到精通》系列——图解0x34:请求下载

上传下载类服务之0x34-请求下载,图解请求+响应格式,直观易懂,快速上手!!

车载系统攻城狮 4924

1.2 Spring AI V1.1.2版本 架构全景:模块拆解与设计哲学

Override// 检查请求的 Token 数量throw new TokenLimitExceededException("请求超出 Token 限制");@Override// 记录实际消耗的 Token@Override// 最先执行// 接口// 不同实现// 使用方无需改变定义抽象,保证可移植性提供 Fluent API,提升开发体验Advisor 机制提供扩展点,支持灵活定制模块化设计让你只引入需要的依赖自动配置。

小林夕程的博客 219

LeetCode-128. 最长连续序列-Java-medium

LeetCode-128. 最长连续序列-Java-medium

qq_41829337的博客 352

Open3D 计算点云基本特征

在 Open3D 中,可以通过 PCA(主成分分析)来求得点云的特征值和特征向量。然后基于这些特征值,进一步计算各种几何特征,如线性、平面性、球度等。

纵马踏花向自由 1604

刷题记录4:最长连续序列

因为延续了前面的几题的哈希算法,这一题我也是直接从哈希去思考的。这一题主要是要找到开头的第一个数,后面的连续数可以跟着找到,在将这个集合存入到哈希表(注意这里的哈希表是unordered_set,也就是的)之后,找到一个数num,然后判断集合中是否存在一个num-1,如果存在,那么可以肯定此数num一定不是开头的第一个数,即可进行淘汰,依次进行,则可得到最大的连续数列。

m0_73167485的博客 220

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

(哈希)128. 最长连续序列

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

учёба 303

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

笔试强训 Day 8:求最小公倍数、数组中的最长连续子序列、字母收集

笔试强训 Day 8:求最小公倍数、数组中的最长连续子序列、字母收集

小雷的算法 blog 165

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

搞定leetcode面试经典150题之哈希算法

HashSet:是一个不允许重复元素的集合,它基于HashMap来实现,add()方法通过计算元素的哈希值来确定存储位置,避免元素重复。HashMap:是一个键值对集合,put()方法通过计算键的哈希值来确定存储位置,并将对应的值存储到该位置。哈希函数:哈希表的效率依赖于哈希函数的质量,优秀的哈希函数可以减少哈希冲突,提高操作效率。

buyaotutou的博客 1857

哈希算法典型题总结 #python解法 #多数元素 #最长连续序列 #缺失的第一个正数

题目典型操作哈希结构难点多数元素频率统计找最大频率最长连续序列存在性判断set找序列起点缺失的第一个正数值-位置映射set/原地交换保证O(1)空间。

weixin_54113539的博客 730

java简单理解哈希算法

理解和做一些简单hash题目

qq_53539629的博客 1220

算法编程题-最长连续序列

本文将分享一道LeetCode原题,并且给出两种方法,代码使用C++实现,并且满足时间复杂度为$O(n)$且全部通过LeetCode的测试用例。

zhuohuashiyi 1352

哈希:LeetCode49. 字母异位词分组 128.最长连续序列

需要遍历 n 个字符串,对于每个字符串,需要 O(klogk) 的时间进行排序以及 O(1) 的时间更新哈希表,因此总时间复杂度是 O(nklogk)。2.遍历Set中的每个数,设为s,把该数作为连续序列的开头,判断s+1,s+2,s+3......是否都存在,求出以s为开头得到的最长连续序列的长度。由于以s为开头得到的最长连续序列的长度小于以s-1为开头的,所以如果s-1存在,则不求s为开头的最长连续序列的长度。3.比较Set中的每个数得到的最长连续序列的长度,选出最长长度。给你一个字符串数组,请你将。

2301_76352996的博客 2519

leetcode128. 最长连续序列,哈希表

leetcode128. 最长连续序列,哈希表

热爱C++和golang的学生 916

LeetCode128:哈希集合巧解最长连续序列

本文介绍了LeetCode 128题「最长连续序列」的解法。题目要求在未排序的整数数组中找到数字连续的最长序列长度,并要求O(n)时间复杂度。核心解法是使用哈希集合存储数组元素,通过判断x-1是否存在来确认序列起点,然后向后扩展计算序列长度。该方法巧妙避免了重复计算,每个元素最多访问一次,保证时间复杂度为O(n)。空间复杂度为O(n)。相比暴力解法,该方法利用哈希集合的快速查找特性,以空间换时间,是本题的最优解之一。

L070117的博客 982

【力扣算法】128-最长连续序列

题目 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-consecutive-sequence ...

ZeromaXHe的博客 3337

LeetCode算法(哈希)

今天的算法内容是哈希相关的题目,难度比数组和链表大,但是可能我习惯了python的字典,hash的理解更容易一些,大家如果不知道hash的概念,请自行搜一下大佬们的讲解,我叙述的没他们好,那么下面就开始今天的练习。

jiangyule的博客 1019

Leetcode 第三题:用C++解决最长连续序列

摘要: 题目要求在未排序的整数数组中找到最长连续序列的长度(元素可间断)。解题核心是使用哈希表去重并优化查找效率: 去重处理:通过unordered_set存储数组元素,自动过滤重复值。 序列起点判断:若元素num的前驱num-1不存在,则num为序列起点,向后遍历统计连续序列长度。 时间复杂度优化:每个元素最多被访问两次(起点探测或序列计数),确保时间复杂度为O(n)。 C++关键点: 容器选择:unordered_set适用于纯键值存储场景。 性能优化:reserve()预分配内存避免rehash开销。

分享一些嵌入式Linux相关知识 649
上一篇: 算法:字母异位词分组
下一篇: 算法:双指针解:盛最多水的容器
博风
博客等级 码龄16年 442粉丝 357原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值