Leetcode|哈希集合|128. 最长连续序列

LeetCode------128. 最长连续序列 本文提出了一种时间复杂度为O(n)的算法,用于求解未排序整数数组中最长连续序列的长度。通过将数组转换为哈希集合去除重复元素,并仅当当前数字是连续序列起点时才开始计算长度,避免了重复遍历。核心步骤包括:预处理去重、定位序列起点、统计连续长度和更新最大值。算法通过哈希集合的O(1)查找特性实现高效计算,适用于包含重复元素和空数组等边界情况。测试验证表明该方案能正确识别最长连续序列,时间复杂度为O(n),空间复杂度为O(n)。 阅读详情

在这里插入图片描述

1 哈希集合

使用哈希集合去重,遍历哈希集合,找到无前继元素,然后逐渐+1判断是否还有递增连续数字,若有则计数器加1

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        if (nums.empty()) return 0;
        unordered_set<int> set;
        // 使用集合去重
        for (auto& num : nums) set.insert(num);
        int maxcnt = 1;
        for (auto& num : set) {
            // 确保num是连续元素中最小元素
            if (!set.count(num - 1)) {
                int curnum = num;
                int count = 1;
                // 从num起,查看num+1, num+2连续值是否在集合中,若在则计数器+1
                while (set.count(curnum + 1)) {
                    count++;
                    curnum++;
                }
                maxcnt = max(maxcnt, count);
            }
        }
        return maxcnt;
    }
};

在这里插入图片描述

使用petalinux做嵌入式设计开发(1) 1.创建vivado工程,建立硬件环境,最终导出hdf文件 既可以在windows系统下的vivado上编写硬件工程并导出hdf文件,也可以在linux系统下的vivado中编写硬件工程并导出hdf文件。(对于windows系统下导出的hdf文件还需要传递到linux系统下的文件夹中。) 2.以hdf硬件文件为基础创建,配置,编译,打包petalinux工程,导出linux系统所需镜像文件。 具体步骤: (0)设置环境变量 设置环境变量使得我们可以直接使用petalin... 阅读详情

相关推荐

solidworks vba二次开发配合问题

solidworks vba二次开发配合问题二次开发装配的步骤 二次开发装配的步骤 solidworks可以使用宏录制配合过程从而得到配合的vba代码,步骤如下: 1.选择两个配合的面(点、线等) 2. 建立配合 例如将两个圆柱面同心(图中高亮): 配合后 我们看一下宏录制的代码: Sub main() //激活solidworks接口 Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc //选择两个圆柱面,注意此处是根据坐标选择,不

Alejandro123的博客 3406

判断集合数据是否连续,并将连续的部分分段存储

package 判断集合数据是否连续; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class Test1 { /** * 初始化数据 * @return */ public static List<Integer> initialization(){ //1.初...

qq_33955821的博客 1893

状态机设计与实现( stm32小车避障为例)

本文以STM32小车避障为例,介绍了状态机设计与实现方法。首先阐述了状态机的事件驱动特性、清晰结构和易扩展优势,并给出硬件组成框架。核心实现部分展示了状态枚举定义、状态转移图和主循环框架,通过switch-case结构实现状态切换。关键状态示例包括前方扫描和转向决策逻辑,通过传感器数据驱动状态转移。总结指出状态机设计需定义枚举状态、实现状态函数、使用switch跳转并更新全局状态。文章最后声明内容为学习笔记,欢迎读者指正交流。全文结构清晰,代码示例具体,为嵌入式系统状态机设计提供了实用参考。

2302_80219536的博客 1046

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

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

L070117的博客 984

【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程

这章来学习串口数据流操作。仿照成品制作一个自己用Qt编写的串口助手。 1. 布局UI界面 创建QWidget工程,布局UI界面:拖入2个 Plain Text Edit,作为串口数据的接收显示和发送框。 拖入几个 Combo Box 、Label 和 Push Button,使用两个Widget进行布局。如下所示。 将接收区的 Plain Text Edit,属性勾选上 readOnly,使其运行时不会被人为的输入操作影响。 加入一些弹簧,使布局美观。(有必要可以加设置不能调整..

Mark_md的博客 9274

SVPWM原理与MCU/FPGA实现:从数学推导到工程实战

空间矢量调制(SVPWM)是实现高性能电机驱动控制的核心算法之一,其通过六个基本电压矢量与零矢量的伏秒平衡,在一个PWM周期内合成任意方向的旋转电压圆,相比传统SPWM可提升约15%的直流电压利用率。该技术不仅涉及扇区判断、作用时间计算、过调制限幅等数学原理,还在MCU与FPGA两种硬件平台上有不同的工程实现路径,包括中心对齐PWM配置、死区插入、定点数流水线设计等。在电动工具、无人机、机器人及车载执行器等电池供电场景中,SVPWM直接决定续航与扭矩表现。本文从数学原理出发,详细拆解MCU和FPGA实现细节

weixin_34265814的博客 301

LeetCode 128. 最长连续序列 - 哈希集合与排序优化详解

题目描述:给定一个未排序的整数数组 nums,找出数字连续的最长序列(元素值相邻差为 1)的长度。要求算法的时间复杂度为 O(n)。原题链接:https://leetcode.cn/problems/longest-consecutive-sequence/难度等级:Medium相关标签:数组、哈希表、排序、并查集(可选)| 解法 | 时间复杂度 | 空间复杂度 | 优点 | 缺点 | 适用场景 |

m0_52114506的博客 1040

MindIE与vLLM-Ascend性能对决:Qwen3在昇腾910B上的推理效率实测

本文深度对比了昇腾910B平台上两大推理框架MindIE与vLLM-Ascend的性能表现。通过实测Qwen3系列模型,详细分析了二者在单卡、多卡场景下的推理效率、扩展性及生产环境适用性,为AI算力基础设施选型提供关键参考。

weixin_29214335的博客 1187

【力扣Hot100】128. 最长连续序列:哈希集合高效解法

(即不存在比它小1的元素)。若是左边界,则向右扩展,统计连续序列的长度。此方法确保每个元素最多被访问两次,时间复杂度为。通过哈希集合的巧妙运用,能够高效解决最长连续序列问题。不同语言的实现均遵循同一逻辑,确保了算法的高效性和一致性。核心思路是利用哈希集合存储所有元素,遍历每个元素时,,找出其中最长连续子序列的长度。给定一个未排序的整数数组。解释:最长连续序列是。

sadsasdsdsdasda的博客 420

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系:rl命名空间下,主要有八大模块。搞定VS后将逐个拆解。

qq_34839823的博客 1736

【实战】——零代码玩转Supervisely人像分割:从标注到模型训练的数据流水线搭建

本文详细介绍了如何零代码使用Supervisely平台搭建人像分割数据流水线,从智能标注到数据集格式转换,再到模型训练与优化。Supervisely的智能标注工具和协作功能大幅提升了人像分割项目的效率,特别适合视频会议背景虚化、虚拟试衣等应用场景。

weixin_30694389的博客 416

LeetCode经典算法面试题 #128:最长连续序列(哈希表集合、并查集等多种实现方案解析)

本文探讨了在未排序整数数组中寻找最长连续数字序列的问题。通过分析问题特征,提出两种主要解法:哈希集合法(最优O(n)时间)和哈希映射法,同时对比了排序法(O(n log n))。哈希集合法通过识别序列起点并向后扩展统计长度,哈希映射法则动态维护序列边界信息。两种方法均利用哈希结构实现高效查找,满足时间复杂度要求。文章还提供了Java代码实现和复杂度分析,为处理大规模数据提供了有效解决方案。

夏日清风 948

2022年全国职业院校技能大赛高职组大数据技术与应用赛项赛卷⑩—解析答案

工业互联网是工业全要素、全产业链、全价值链的全面连接,是人、机、物、工厂互联互通的新型工业生产制造服务体系,是互联网从消费领域向生产领域、从虚拟经济向实体经济拓展的核心载体,是建设现代化经济体系、实现高质量发展和塑造全球产业竞争力的关键支撑。加快发展工业互联网产业,不仅是各国顺应产业发展大势,抢占产业未来制高点的战略选择,也是我国推动制造业质量变革、效率变革和动力变革,实现高质量发展的客观要求。 为完成工业大数据分析工作,你所在的小组将应用大数据技术,以Scala作为整个项目的基础开发语言,基于大数据平台综

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 582

LeetCode 128:最长连续序列 | 哈希表与集合的巧妙运用

最长连续序列问题展示了几种不同算法设计思路的对比:排序法的简洁性、哈希表法的高效性、以及并查集法的通用性。哈希表法通过"只从序列起点开始"的优化,将看似 O(n²) 的问题转化为 O(n),体现了对问题特点的深入理解。在面试中,如果被问到这道题,应该首先提出排序的简单方案,然后分析其不足,最后提出哈希表的优化方案。这种由浅入深的解决思路能给面试官留下好的印象,展示你的问题分析能力和算法优化能力。希望通过本文的讲解,读者能够深入理解这道题的多种解法及其背后的算法思想。

cannonjinx的博客 1002

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...

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

力扣热门算法题 127.单词接龙,128.最长连续序列,130.被围绕的区域

​力扣热门算法题 127.单词接龙,128.最长连续序列,130.被围绕的区域,每题做详细思路梳理,配套Python&Java双语代码, 2025.07.07 可通过leetcode所有测试用例。 ​

引用原创内容标明出处即可 1452

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

哈希表(哈希映射,哈希集合):力扣128. 最长连续序列

1、题目描述: 2、题解: 方法1:暴力法 先排序,然后判断 class Solution: def longestConsecutive(self, nums: List[int]) -> int: #暴力法 nums.sort() # print(nums) res = 0 for i in range(len(nums)): temp = 1 for j in

weixin_42042056的博客 310

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

力扣LeetCode 128. 最长连续序列

力扣LeetCode 128. 最长连续序列

weixin_63171335的博客 223

【hot 100】哈希篇(java)

最后,我们可能会找到多个连续序列,我们需要找到最长的那个连续序列,直接Math.max,对比较上一次外层循环中的currentLen和当前循环中的currentNum哪个最大。下面我们要实现逻辑,循环查找set中的开头数字,易知,必然不存在比开头数字小的数字,否则这个数字不能成为开头。直接判断set中是否包含所循环到的数字的大小-1的数字,如果没有,说明是开头的数字。,同时开头数字要后移,指到当前数字上,方便后面对该数字的下一位数字的查找。,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

m0_74875264的博客 472

LeetCode:128. 最长连续序列

摘要 该文介绍了LeetCode上"最长连续序列"问题的哈希集合解法。通过将数组元素存入哈希集合实现去重和快速查找,算法核心是寻找连续序列的起点(即当前元素x的前驱x-1不存在时),然后向后查找连续数字。时间复杂度为O(n),空间复杂度O(n)。文章推荐参考灵茶山艾府的题解,并提供了Java实现代码,通过比较不同起点的序列长度来获取最终结果。

2303_80876582的博客 66

LeetCode 128. 最长连续序列:O (n) 时间的哈希集合 + 剪枝解法全解析

题目要求在未排序整数数组中找到最长连续序列的长度,要求O(n)时间复杂度。解法使用哈希集合存储元素以实现快速查找,并通过判断x-1是否存在来确定序列起点,避免重复计算。关键优化包括:1)使用哈希集合实现O(1)查找;2)仅从序列起点开始统计长度;3)剪枝优化,当当前最长序列超过数组一半长度时提前终止。代码通过遍历集合元素,对每个可能的起点统计连续序列长度,最终返回最大值。时间复杂度和空间复杂度均为O(n)。

loverdany的博客 420

【Leetcode热题100】128.最长连续序列

找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。最长数字连续序列是 [1, 2, 3, 4]。请你设计并实现时间复杂度为。给定一个未排序的整数数组。

weixin_42489964的博客 51

【哈希】LC 128.最长连续序列

本文介绍了解决LeetCode 128题(最长连续序列)的高效思路与代码实现。题目要求在O(n)时间复杂度内找到未排序数组中最长的数字连续序列。核心思路是利用哈希表快速判断元素是否可能作为序列起点,仅对潜在起点元素计算连续序列长度,避免重复计算。具体步骤包括:去重处理,跳过非起点元素,对每个可能起点向后遍历统计序列长度。最终通过比较得到全局最大长度,满足题目复杂度要求的同时优化了性能。该方法通过哈希表实现了O(1)查询,体现了空间换时间的策略。

你的博客 244

力扣hot100+刷题系列——128最长连续序列

题目要求找出未排序整数数组中最长连续数字序列的长度,时间复杂度需为O(n)。解法一通过排序和去重实现,但时间复杂度为O(n log n)。解法二利用哈希表优化:先将所有数字存入哈希表,然后只从连续序列的起点开始查找,统计最长连续序列长度。后者满足O(n)时间要求,是更优解。示例代码展示了两种实现方式,并提醒选择合适的哈希结构以避免性能退化。

li3264999的博客 464

LeetCode 热题100 No.3——最长连续序列

之后考虑用到哈希表,把所有数字存入哈希集合实现 O (1) 查找,之后的这个思路很关键,就是想到只从连续序列的起点开始统计长度。判断条件是集合中不存在"当前数字-1"说明是序列开头,再循环向后查找连续数字,统计序列长度,更新全局最大值。每个元素只会被访问一次,整体时间复杂度就是O (n)。这道题看到第一眼想法是用sort排序后直接遍历找最长序列,可惜sort排序时间复杂度为O(nlogn),并不符合题目O(n)的要求。空间复杂度:O(n),哈希集合存储全部数字。

2502_93578012的博客 182

[LeetCode] 128、最长连续序列

因为规定了时间复杂度,先排序不满足要求。注:本题的标签之前没有哈希表,但是用。给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。)可满足要求,用并查集稍复杂。暴力,哈希表,并查集都可以。

aift的专栏 413

LeetCode高频题128. 最长连续序列,经常被互联网大厂面试考到

1)set可以控制最小的开头 2)哈希表俩记录最长连续子序列的长度,那个过程复杂,关键就是合并过程 3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。.........

weixin_46838716的博客 1007
上一篇: Leetcode|DFS|130. 被围绕的区域
下一篇: Leetcode|DFS|面试题 16.19. 水域大小
SL_World
SL_World 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄10年 1034粉丝 308原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SL_World

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值