java数据结构与算法刷题-----剑指 Offer II 119:最长连续序列

最长递增子序列(LIS)的三种算法 最长递增子序列:给定一个长度为N的数组,找出一个最长的单调递增子序列,子序列不一定连续,但初始顺序不能乱。 比如数组A={1,3,4,2,5},其最长递增子序列为1,3,4,5 方法一:最长公共子序列法 对于给定长度为N的数组A: 使数组B为排序后的数组A (O(NlogN)) 求出A与B的最长公共子序列(LCS) (O(N2)) 对求得的公共子序列进行去重 (O(N)... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

  1. 思路分析
  1. 先用set去重,然后以依次遍历集合,以每个元素为起点
  2. 先找比自己小1的,有的话,向下遍历,因为一定会遍历到小1的那个数。如果没有找到,遍历比自己大1的。
  3. 如果有比自己大1的,继续向下遍历,找比自己大2的,以此类推。同时记录长度,最终获取最大长度。
  1. 代码
    在这里插入图片描述
class Solution {
    public int longestConsecutive(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        //全部放入set去重
        for(int a:nums){
            set.add(a);
        }
        int longestStreak = 0;//记录最长长度
        for(int num:set){
            //如果有比当前数小1的数,跳过这次循环
            if(!set.contains(num-1)){
                int currentNum = num;//当前数
                int currentStreak = 1;//当前数为起点的长度
                //如果没有比当前数小1的,进行比当前数大1的数枚举
                while(set.contains(currentNum+1)){//如果有则++
                    currentNum+=1;
                    currentStreak+=1;
                }
                //看看以这个数为起点,是否比上一次记录的长度更长,返回更长的值
                longestStreak = Math.max(longestStreak,currentStreak);
            }
        }
        return longestStreak;
    }
}

刷题一定要坚持,总结套路,不单单要把题做出来,要举一反三,也要参考别人的思路,学习别人解题的优点,找出你觉得可以优化的点。

  1. 单链表解题思路:双指针、快慢指针、反转链表、预先指针
  1. 双指针:对于单链表而言,可以方便的让我们遍历结点,并做一些额外的事
  2. 快慢指针:常用于找链表中点,找循环链表的循环点,一般快指针每次移动两个结点,慢指针每次移动一个结点。
  3. 反转链表:通常有些题,将链表反转后会更好做,一般选用三指针迭代法,递归的空间复杂度有点高
  4. 预先指针:常用于找结点,比如找倒数第3个结点,那么定义两个指针,第一个指针先移动3个结点,然后两个指针一起遍历,当第一个指针遍历完成,第二个指针指向的结点就是要找的结点
  1. 数组解题思路:双指针、三指针,下标标记
  1. 双指针:多用于减少时间复杂度,快速遍历数组
  2. 三指针:多用于二分查找,分为中间指针,左和右指针
  3. 下标标记:常用于在数组范围内找东西,而不想使用额外的空间的情况,比如找数组长度为n,元素取值范围为[1,n]的数组中没有出现的数字,遍历每个元素,然后将对应下标位置的元素变为负数或者超出[1,n]范围的正数,最后没有发生变化的元素,就是缺少的值。
  1. 栈解题思路:倒着入栈,双栈
  1. 倒着入栈:适用于出栈时想让输出是正序的情况。比如字符串’abc’,如果倒着入栈,那么栈中元素是(c,b,a)。栈是先进后出,此时出栈,结果为abc。
  2. 双栈:适用于实现队列的先入先出效果。一个栈负责输入,另一个栈负责输出。
GD32F4系列定时器正交译码器实战:用TIMER1读取旋转编码器信号(附完整代码) 本文详细介绍了GD32F4系列定时器正交译码器的实战应用,重点讲解如何使用TIMER1模块高效读取旋转编码器信号。内容涵盖硬件连接、定时器配置、方向判断与速度计算等关键环节,并提供了完整的代码实现和优化建议,帮助开发者快速掌握GD32微控制器在工业控制和消费电子领域的编码器接口设计。 阅读详情

相关推荐

AWS入门实践-如何在AWS云上创建一个内外网隔离的生产环境

在 AWS 上建立一个内外网分离的生产环境,可以减少应用服务的暴露面,有效的保证你的应用服务器的安全。通常我们会将web应用放在外网的子网内,数据库服务器等放在内网的子网。我们将按照下图来部署动手实践环境,实现在public subnet的EC2虚拟机可以直接通过互联网可以访问,在Private subnet的EC2虚拟机不能通过互联网直接访问,但是却可以在内部来访问互联网安装应用等等。

weixin_39108752的博客 2995

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

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

Cnc2014的博客 769

STM32F407VET6与CH395Q串口通信实战:从零搭建以太网客户端(附完整代码)

本文详细介绍了基于STM32F407VET6微控制器与南京沁恒微CH395Q以太网芯片,通过串口通信从零搭建TCP客户端应用的完整实战过程。内容涵盖硬件连接、驱动层设计、基于FreeRTOS的任务实现以及核心调试技巧,并提供了完整的代码示例,帮助嵌入式开发者快速实现设备联网功能。

weixin_29179311的博客 417

最长连续序列(力扣热题HOT100 之 力扣128)Java

目录 一、题目描述 二、思路讲解 三、Java代码实现 四、思路优化 五、优化代码 一、题目描述 给定一个未排序的整数数组 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,...

m0_49499183的博客 1161

使用PaddleOCR识别查验平台验证码

PaddleOCR识别国税查验平台验证码

m0_63932300的博客 1269

QGIS插件实战:用百度地图AOI数据做个城市公园分析,从下载到出图全记录

本文详细介绍了如何利用QGIS的百度地图AOI插件进行城市公园分析,从插件安装、数据获取到空间分析与可视化全流程。通过实战案例演示了公园面积统计、服务范围缓冲区分析及专题地图制作,帮助用户高效完成城市绿地评估工作。

weixin_30790841的博客 556

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

【代码】java数据结构与算法刷题-----LeetCode128. 最长连续序列。

殷志鹏的博客 804

EEGLAB安装、EDF数据导入、EEG预处理(Matlab)

目录下载和安装下载安装遇到问题及解决方案导入EDF数据EEG预处理 下载和安装 下载 链接:https://pan.baidu.com/s/17eMT6B7LgZ4PyqWvD5ixmg 提取码:12gz 安装 **第一步:**将下载下来的文件解压,修改名称为eeglab,将此文件夹存放在matlab的安装目录里的toolbox文件夹下,下图是我的路径,需要拷贝到自己相对应的路径中 第二步: 打开Matlab软件,点击主页中的设置路径 设置路径 点击添加并包含子文件夹,将eeglab文件夹添加进来,保

y18771025420的博客 1万+

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

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

qq_51744939的博客 321

openEuler 22.03 安装及配置Gitlab容器

在 openEuler 22.03 上安装及配置Gitlab容器

轻步玉阶 3317

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

Vue Print Designer——一款让打印模板的设计变简单的可视化打印设计器

bjzhang75的博客 687

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

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

qq_45794129的博客 247

基于YOLOv5的人脸识别系统:从构建到应用的全流程指南

本文详细介绍了基于YOLOv5的人脸识别系统开发全流程。首先阐述了YOLOv5模型的高效性和准确性优势,随后分步骤讲解了深度学习环境配置、数据集准备(推荐WIDER FACE数据集)和模型训练方法。重点展示了如何将训练好的模型集成到Tkinter开发的GUI界面中,实现图片上传、人脸检测和结果可视化功能。文章提供完整的代码示例和飞书文档链接(密码:946m22&8),帮助开发者快速构建可交互的人脸识别系统,适用于安防、门禁等多种应用场景。通过该项目,读者可掌握YOLOv5的实际应用和界面集成技术。

FJN110的博客 169

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万+

android 蓝牙通讯demo

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

leetcode-剑指offer(专项突破版)-go语言实现

leetcode-剑指offer(专项突破版)-go语言实现

H.C. Lee的博客 595

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode 128. 最长连续序列(Java)

暴力解法(如排序后遍历)的时间复杂度为 O(n log n),不满足题目要求。:利用哈希表(HashSet)快速查询元素是否存在,避免重复遍历。,找到其中最长的连续数字序列的长度。要求算法的时间复杂度为。循环向后查找连续的数,直到无法继续。存储所有元素,去除重复值。是某个连续序列的最小值。给定一个未排序的整数数组。遍历哈希表中的每个元素。,哈希表为空,直接返回。解释:最长连续序列是。

2301_79966297的博客 934

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

3.最长连续序列

最长连续序列 给定一个未排序的整数数组 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]输出...

m0_56312312的博客 241

最长连续子序列偏移_最长连续递增子序列问题

最长递增子序列问题:给定一个长度为N的数组,给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2,8},则其最长的单调递增子序列为{5,6,7,8},长度为4。​动态规划做法(时间复杂度O(N^2))假设我们定义一个大小为n的数组a,每个元素的值分别为a[0],a[1],....,a[n-1]。我们将dp[i...

weixin_39620273的博客 393

java无序数组找最长连续子串,算法题整理

链表:一个单链表,奇数位升序,偶数位降序,输出排序后的单链表。(写了个归并,拆成两个单链表并且把偶数位做头插翻转过来,再归并到一起。)链表节点两两反转奇偶链表单向链表,头尾奇偶交替输出(中等)K个一组反转链表链表是否相交两个链表的大数相加问题链表找环、环形街道上偷东西,不能挨着偷(反正就是个挺简单的DP,扫两遍) 10min.链表按指定size翻转.手写链表合并,从创建链表到合并,main里面输出...

weixin_29817227的博客 2075

最长连续序列(java)

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

用来自己学习,复习 959

【中等】数组中的最长连续序列-Java

package live.every.day.ProgrammingDesign.CodingInterviewGuide.RecursionAndDynamicPrograming; import java.util.HashMap; /** * 数组中的最长连续序列 * * 【题目】 * 给定无序数组arr,返回其中最长的连续序列的长度。 * * 【难度】 * 中等 * * 【解答】 * 本题利用哈希表可以实现时间复杂度为0(N)、额外空间复杂度为O(N)的方法。具体过程如下:

了解➔熟悉➔掌握➔精通 534

Java:寻找最长连续序列

通过实施上述策略,我们成功设计出一个算法以识别最长的连续数列。在这个算法中,使用HashSet来存储数组内的元素,从而实现对任意数字的迅速查找。同时,通过判断当前元素是否属于连续序列的起点,有效地计算出了最长连续序列的长度。经过严格的单元测试,代码的准确性和稳定性得到了验证。在处理大规模数据集时,本方法展现了卓越的性能,显示出高效性和实用性的双重优势。

布说在见的博客 1509

JAVA程序设计:最长连续序列(LeetCode:128)

给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为O(n)。 示例: 输入:[100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 思路:我们将数组存在hashset中,这样查找可以做到O(1),同时,我们只对 当前数字 - 1 不在哈希表里的数字,作为连续序列的第一个数字去找对应的最长序列,...

信仰.的博客 733

128.最长连续序列(java)

题目描述 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 方法一:哈希表 class Solution { public int longestConsecutive(int[] nums) { ...

m0_37605197的博客 577

力扣hot100之最长连续序列(java版)

举个例子:4解释:最长连续序列是,长度为 4。注意:不要求原数组中位置连续,只要数值连续。序列必须是严格递增 +1 的整数序列。数组可能有重复元素(如[1,2,2,3]→ 最长是[1,2,3],长度3)。

2301_80335585的博客 583

Java版LeetCode热题100之最长连续序列:从暴力到O(n)的最优解

本题精髓利用哈希表实现 O(1) 查询;通过“跳过非起点”实现线性时间复杂度;体现了“聪明地减少重复计算”的算法设计哲学。记住:不是所有嵌套循环都是 O(n²)!关键看每个元素被处理的总次数。延伸思考如果要求返回具体的最长连续序列(而不仅是长度),如何修改?如果序列允许“间隔为 d 的等差序列”,如何推广?✅掌握这道题,你就掌握了“无序中找连续”的通用解法模板!👉,获取更多 LeetCode 高频题深度解析!

吾为热爱计科,致力于知识分享的践行者,此博客是我在这条道路上留下的足迹。 714
上一篇: java数据结构与算法刷题-----LeetCode6:Z 字形变换
下一篇: java数据结构与算法刷题-----牛客,华为机试:HJ1 字符串最后一个单词的长度
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、付费专栏及课程。

余额充值