java数据结构与算法刷题-----LeetCode128. 最长连续序列

2023华为OD机试真题 Java 实现【最长连续子序列】 1:简单的双指针法的应用,两指针初始都指向最左处,右指针不断右移,计算两个指针区间内的子序列之和,分三种情况,1:大于target, 则左指针右移。2:等于target,满足条件,记录一下。3:小于target,右指针继续右移。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度如果没有满足要求的序列,返回-1。1,2,3和4,2两个序列均能满足要求,所以最长的连续序列为1,2,3,因此结果为3.在读入数据量大的情况下,格式1的速度会快些。没有满足要求的子序列,返回-1。 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 先排序,然后寻找相连的元素,相差为1,记录子序列长度。但是时间复杂度较高,主要是因为排序算法需要O( n ∗ l o g 2 n n*log_2{n} n∗log2​n)的时间复杂度
  2. 使用hash表,用set集合进行去重,需要空间复杂度O(n). 然后利用set寻找相邻元素,时间复杂度O(n)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
代码

法一:排序后,找最长连续子序列
在这里插入图片描述

class Solution {
    public int longestConsecutive(int[] nums) {
        if (nums == null || nums.length == 0) return 0;

        Arrays.sort(nums);
        int index = 1, max = 0;
        for(int i = 1; i < nums.length; i++) {
            if (nums[i] == nums[i-1]) {
                continue;
            }
            if (nums[i] != nums[i-1] + 1) {
                max = Math.max(max, index);
                index = 0;
            }
            index++;
        }
        return Math.max(max, index);
    }
}//end_Solution
  1. 法二:hash表
    在这里插入图片描述
class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> set = new HashSet<Integer>();//set集合
        for(int num : nums) set.add(num);//set去重
        int longestStreak = 0;//保存最长序列长度
        for(int num : set){//遍历set集合,寻找每个元素,以它为最小值的,最长子序列
            //set.contains(num),num如果存在于set,就返回true。
            if(!set.contains(num-1)){//如果当前值,没有比它小的,那么就以它为最小值,尝试构建子序列
                //如果当前值没有比它小的,说明当前值就是当前最小的
                //那么就看看这个以当前值为序列最小值的子序列,长度是多少
                int currentNum = num;//记录当前值
                int currentStreak = 1;//当前子序列长度初始为1
                while(set.contains(currentNum + 1)){//如果有比它大1的
                    currentNum += 1;//当前值更新
                    currentStreak += 1;//子序列长度+1
                }//end_while
                longestStreak = Math.max(longestStreak,currentStreak);//只保留大的子序列长度
            }//end_if
        }//end_for 
        return longestStreak;
    }//end_longestConsecutive
}//end_Solution
实现最长连续递增序列算法 Java 然后通过遍历数组,判断当前元素与前一个元素的大小关系,更新maxLength和记录最长连续递增序列的起始索引和结束索引。最长连续递增序列是指数组中连续递增的元素构成的最长子序列。在本文中,我们将讨论如何使用Java语言来实现一个高效的算法来找到给定数组中的最长连续递增序列,并提供相应的源代码。以上就是使用Java语言实现最长连续递增序列算法的方法和代码。通过这种算法,我们可以高效地找到数组中的最长连续递增序列。希望本文能对你有所帮助!最长连续递增序列的起始索引为:0。最长连续递增序列的结束索引为:3。 阅读详情

相关推荐

【中等】力扣算法题解析LeetCode128:最长连续序列

本文提出了一种高效算法,用于在未排序整数数组中寻找最长连续数字序列的长度。通过哈希集合存储元素实现O(1)查询,仅处理序列起点减少了冗余计算。算法首先识别连续序列的最小元素作为起点,然后向后扩展计算序列长度,最终返回全局最大值。该方法时间复杂度为O(n),空间复杂度为O(n),能够处理10^5量级的数据,实测执行时间仅14ms,内存消耗58.6MB。关键优化在于跳过非起点元素,避免重复计算,保证线性时间复杂度。

ylumwd的博客 711

力扣(LeetCode) 128.最长连续序列(java)

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为O(n) 的算法解决此问题。

Cnc2014的博客 769

【忍者算法】从拼积木到最长连续序列:一道别出心裁的数组题目|LeetCode 128 最长连续序列

本题核心:通过预处理数据结构来优化查找!

忍者算法的博客 738

Java算法 字母异位词分组 、最长连续序列

文章通过哈希表的方法解决了字母异位词分组 和最长连续序列的问题。

qq_51744939的博客 321

告别“盲开”:手把手教你用MCU内置比较器搞定BLDC无感方波启动(附代码片段)

本文详细介绍了如何利用MCU内置比较器实现BLDC无感方波启动,解决传统无传感器控制中的'盲开'问题。通过虚拟中性点电路设计和三段式启动流程,结合反电动势检测和过零检测技术,提供了一套经济高效的解决方案,并附有可直接移植的代码片段,助力工程师快速实现可靠的无感控制。

weixin_33694172的博客 505

doris2.1.8连接报错ERROR 1203 (42000): Reach limit of connections解决办法

摘要:客户Doris数据库报错"ERROR 1203 (42000): Reach limit of connections"的解决过程。发现AI提供的解决方案存在错误:1)查询命令应为SHOW FRONTEND CONFIG而非show variables;2)参数名称应为qe_max_connection而非max_connections。正确解决步骤:1)用admin账户登录查看连接数限制和当前连接数;2)通过SHOW PROPERTY命令检查用户资源限制;3)针对不同情况修改参数

Brent的专栏 1762

128. 最长连续序列 --力扣 --JAVA

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

qq_45794129的博客 247

Cisco Firepower FMCv修改管理Ip方法

Cisco Firepower FMCv修改管理Ip方法

funnycoffee123的博客 1091

【LeetCode热题100】No.128——最长连续序列

本文主要讲解 LeetCode 热题 100 中 “最长连续序列” 题的解法,该题要求找出未排序整数数组中数字连续的最长序列长度,且需实现 O (n) 时间复杂度。先分析排序法的局限性,再重点阐述最优思路:用哈希表存储数组元素实现 O (1) 查找与去重,通过 “判定 x-1 是否存在” 确定连续序列起点,仅对起点遍历统计序列长度,避免重复计算。还给出完整 Java 代码,包含边界处理、哈希表存储、起点判定与长度统计等步骤,通过多个测试案例验证正确性,最后分析时间复杂度 O (n)、空间复杂度 O (n),

Mr.Ja的博客 2231

OpenMontage:AI代理驱动的端到端视频生产系统实战指南

在当今内容创作领域,自动化视频生成技术正成为提升生产效率的关键。其核心原理在于通过智能体(Agent)架构,将复杂的视频制作流程拆解为可被AI理解和执行的标准化任务,从而实现从创意到成片的端到端自动化。这项技术的核心价值在于大幅降低了专业视频制作的门槛,使非专业用户也能快速产出具有一定专业度的内容。其典型应用场景包括社交媒体短片、产品演示、知识科普视频的批量生产。OpenMontage正是这一技术理念的杰出实践,它构建了一个完整的代理驱动视频生产系统,将AI编码助手转变为能自主规划并执行脚本撰写、素材检索、

weixin_35757191的博客 649

JS逆向-快手__NS_hxfalcon参数分析

现在快手H5接口都需要__NS_hxfalcon这个参数,这篇文章就是逆向这个参数

ckcookies的博客 4076

LeetCode刷题汇总

剑指offer 剑指 Offer 03 数组中重复的数字 剑指 Offer 04 二维数组中的查找 剑指 Offer 05 替换空格 剑指 Offer 06 从尾到头打印链表 剑指 Offer 07 重建二叉树 剑指 Offer 09 用两个栈实现队列 剑指 Offer 10- I 斐波那契数列 剑指 Offer 10- II 青蛙跳台阶问题 剑指 Offer 11 旋转数组的最小数字 剑指 Offer 12 矩阵中的路径 剑指 Offer 13 机器人的运动范围 剑指 Offer 14- I 剪绳子 剑指

weixin_44171872的博客 2万+

麒麟V10等保三级配置实战:从auditd规则到PAM锁定的可信基线构建

Linux安全基线是信息系统可信运行的基础能力,其核心在于身份鉴别、访问控制与安全审计三大机制的协同落地。在国产化信创环境中,麒麟V10作为深度适配飞腾/鲲鹏平台的操作系统,其等保三级合规并非简单套用CentOS加固脚本,而是需围绕内核审计(auditd)、可插拔认证模块(PAM)及国产安全增强机制(如kysec)进行精细化编排。技术价值体现在将抽象条款(如GB/T 22239-2019中6.1.2、6.3.3条)转化为可验证的命令行操作,确保登录失败可锁定、关键行为可追溯、时间偏差不致日志失效。典型应用场

weixin_29969209的博客 599

LeetCode Hot100刷题——最长连续序列

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

2301_77021913的博客 726

实例讲解Simulink CAN通讯丢失故障判定模型搭建及仿真测试验证方法

本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。

qq_43011586的博客 3685

一文让你轻松理解802.11ax RU的概念

RU

1042484520@qq.com(邮箱) 3368

Java详解LeetCode 热题 100(03):LeetCode 128. 最长连续序列(Longest Consecutive Sequence)详解

虽然有嵌套循环,但内层循环对每个元素最多只执行一次,所以总操作次数不超过2n,时间复杂度为O(n)。理解连续序列的定义:数值上连续,而非位置上连续时间复杂度要求:需要O(n)算法,排除排序等O(n log n)的方法使用哈希结构:利用哈希表/集合O(1)的查找特性避免重复计算:只从可能的起点开始查找正确处理特殊情况:空数组、单元素数组、重复元素等。

yk_dflkg的博客 1500

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

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

LeetCode图解 | 128.最长连续序列

点击上方蓝字设为星标下面开始今天的学习~今天分享一个LeetCode题,题号是128,标题是最长连续序列,题目标签是并查集和数组。题目描述给定一个未排序的整数数组,找出最长连续序列的长度...

程序员吴师兄的博客 754

数学建模模型总结

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

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

这段代码的目的是高效地解决 “最长连续序列” 问题。具体来说,它需要在一个未排序的整数数组 中,找出由连续整数构成的最长序列的长度。例如,对于输入 ,最长的连续序列是 ,其长度为 4。算法的整体思路可以分解为以下几个核心步骤:数据结构选择与预处理:遍历与序列起点识别:序列长度计算:结果更新与返回:总而言之,该算法通过将列表转换为哈希集合来优化查找效率,并通过只从序列的起点开始计数来避免冗余工作,从而实现线性时间复杂度的解决方案。 时空复杂度 时间复杂度:O(N) 集合初始化: 循环将 个元素添加到

最短的捷径就是绕远路,绕远路才是我的最短捷径。 1108

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

LeetCode 128:最长连续序列 —— 一次遍历,O(n) 找出最长“连号”

在 LeetCode 上,第 128 题「最长连续序列」是一道非常经典的算法题,它不仅考察了对数组的灵活处理,更重要的是要求我们在 O(n) 的时间复杂度内解决问题。我们初次接触可能会想到排序,但排序的时间复杂度是 O(n log n),不符合题目要求。那么如何做到 O(n) 呢?今天我们就来详细拆解这道题的解法,从预备知识到代码实现,彻底掌握它。这道题的精髓在于利用哈希集合的快速查找特性,并结合“只从起点开始统计”的策略,巧妙地避开了排序带来的额外时间开销。

noitcivnoc的博客 896

Java实现 LeetCode 128 最长连续序列

128. 最长连续序列 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入...

Marcus 3400

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

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

cloud的博客 1610

【Hot100|3 LeetCode 128. 最长连续序列】

摘要:本文详细解析了LeetCode 128题「最长连续序列」的高效解法。该方案利用HashSet实现O(1)快速查找,通过「判断序列起点+向后延伸」的策略,在O(n)时间复杂度内解决问题。核心思路是:通过判断x-1是否存在来确定序列起点,避免重复计算;从起点开始向后延伸查找连续序列;用Math.max动态更新最长长度。文章通过代码逐行解析和实例演示(如数组[100,4,200,1,3,2]的最长序列1-4)验证了算法正确性,并分析了O(n)时间复杂度和O(n)空间复杂度。

King_model的博客 995

力扣刷题-热题100题-第3题(C、python)

128. 最长连续序列 - 力扣(LeetCode)在编程中,(Set)是一个不允许重复元素的容器。集合中可以存储任何类型的元素,通常用于测试元素是否存在、去重等场景。在许多编程语言中都有集合的实现,如 Python、Java、C++ 等,同时对集合有直接的内嵌函数进行操作,但是c没有,所以这道题对于c来说主要用对整个数组进行有序的排序后再进行处理,而对于Python、Java、C++这些编程语言可以直接使用这种数据结构用哈希法来解决这道题目。

weixin_44505472的博客 893

最长连续子序列偏移_LeetCode动画 | 128.最长连续序列

今天分享一个LeetCode题,题号是128,标题是最长连续序列,题目标签是并查集和数组。题目描述给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入:[100,4,200,1,3,2]输出:4解释:最长连续序列是[1, 2, 3, 4]。它的长度为 4。解题看评论和解题都没有详细介绍使用并查集去解这道题的,不过,话说并查集是哪...

weixin_39601511的博客 108

LeetCode hot 100 每日一题(3)--128. 最长连续序列

下面是HashSet在 Java 中的声明和基本用法示例,以及详细解释:在 Java 中,HashSet是一个基于哈希表(HashMap)实现的集合类,用于存储不重复的元素。​它不保证元素的顺序,即元素的插入顺序可能与迭代顺序不同。声明HashSet要使用 HashSet,首先需要导入类。// 创建一个存储字符串的 HashSet Set < String > set = new HashSet < >();

m0_46464899的博客 1375
上一篇: java数据结构与算法刷题-----LeetCode594. 最长和谐子序列
下一篇: java数据结构与算法刷题-----LeetCode344. 反转字符串
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

ydenergy_殷志鹏

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

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

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

打赏作者

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

抵扣说明:

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

余额充值