【力扣】最长连续序列

动态规划之递增子序列 因为题目要求连续,因此dp[i]仅能通过dp[i - 1]推出,易得dp[i] = dp[i - 1] + 1,以上述示例来看,for循环从下标1开始,即遍历元素3,3大于首元素1,dp[2] = dp[1] + 1,dp[2] = 2,5 > 3,dp[3] = 3,4 < 5,dp[4]保持初始化值为1,7 > 4,dp[5] = 2,显然连续最长递增子序列出现在dp[3],而不是dp[5],因此需要使用ans记录最长连续递增子序列的长度。输入:nums = [10,9,2,5,3,7,101,18] 阅读详情

 🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️

本博客致力于知识分享,与更多的人进行学习交流

​

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

提示:

  • 0 <= nums.length <= 105
  • -109 <= nums[i] <= 109

unordered_set

思路

由于nums数组中可能会有重复元素出现,并且题目对时间复杂度有要求,而unordered_set查找效率为O(1),所以考虑使用unordered_set对数组元素去重。

遍历集合,查找比当前元素小1的元素num-1是否在集合中出现,如果没有出现,则说明num是连续子序列的第一个元素,所以当前子序列长度是1,然后开始搜索元素,每次自增1,直到搜索不到元素为止。更新最大长度。

集合遍历完之后,此时的最大长度就是最长连续序列长度。

代码实现

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        if(nums.empty()) return 0;
        unordered_set<int> nums_Set(nums.begin(),nums.end());
        int CurLength=0;
        int MaxLength=0;
        int CurNum;
        for(int num:nums_Set)
        {
            if(!nums_Set.count(num-1))//说明num是连续子序列的第一个元素
            {
                CurLength=1;
                CurNum=num;
                while(nums_Set.count(++CurNum))
                {
                    CurLength++;
                }
            }
            MaxLength=max(MaxLength,CurLength);
        }
        return MaxLength;
    }
};
LeetCode 最长连续递增序列(图解) 给定一个未经排序的整数数组,找到最长且连续的的递增序列。 示例 1: 输入: [1,3,5,4,7] 输出: 3 解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例 2: 输入: [2,2,2,2,2] 输出: 1 解释: 最长连续递增序列是 [2], 长度为1。 注意:数组长度不会超过... 阅读详情

相关推荐

016.最长连续子序列

华为OD真题

半夏半暖半倾城的博客 1012

最长连续序列

题目介绍 力扣128题:https://leetcode-cn.com/problems/longest-consecutive-sequence/ 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 进阶:你可以设计并实现时间复杂度为 O(n) 的解决方案吗? 分析 要寻找连续序列,关键在于找到当前数的“下一个数”(或者叫“后继”)。如果有后继,就在数组中继续找,每找到一个后继,当前序列长度就加1;直到找不到时,就得到了以当前数开始的、最长的连续序列长度

weixin_48276298的博客 1791

【100分】【最长连续子序列】

为了解决这个问题,我们可以使用滑动窗口的方法。滑动窗口是一个非常常用的技巧,用于在数组或序列中寻找特定条件下的子序列。有N个正整数组成的一个序列。给定整数sum,求长度最长的连续子序列,使他们的和等于sum,返回此子序列的长度,如果没有满足要求的序列,返回-1。

weixin_54707168的博客 696

( 哈希表) 128. 最长连续序列 ——【Leetcode每日一题】

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

weixin_43412762的博客 1650

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

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

ylumwd的博客 711

保姆级教程:在RK3588开发板上用CMake交叉编译ZLMediaKit(附完整toolchain配置)

本文提供了一份详细的RK3588开发板上使用CMake交叉编译ZLMediaKit的教程,包括完整的toolchain配置和实战避坑指南。从环境准备、工具链配置到依赖处理、编译部署,手把手指导开发者完成ARM64架构的流媒体服务搭建,特别适合嵌入式开发新手。

weixin_28681255的博客 383

力扣LeetCode 128题:最长连续序列

题目: 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 分析 要找 连续序列 的长度,从结果可以看出,主要是为了排序,排序之后,遍历结果就可以进行连续长度的更新。 但是排序的算法,即使快排的时间复杂度也有O(nlogn),不满足要求。 这种时候一般就会想到借助哈希表,也就是类似计数排序,先来试试,用数组来做哈希表,下标做n

LifeGoesOn 1428

从零开始:用Neo4j构建你的第一个知识图谱(附完整代码示例)

本文提供了一份从零开始的Neo4j知识图谱构建实战指南。通过一个“经典科幻电影宇宙”的具体案例,手把手教你安装环境、设计图谱模式,并使用Cypher查询语言完成节点与关系的创建、数据查询及可视化,帮助你快速掌握自下而上构建知识图谱的核心技能。

weixin_29053073的博客 471

力扣最热一百题——3.最长连续序列

力扣最热一百题——最长连续序列,多种解法,难点辨析。新手也能学会!!!

WenJGo的博客 1958

PWM调节DCDC参数计算原理

SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。

电子绿洲的博客 3158

从零开始:如何利用Device Monitoring Studio构建高效数据监控系统

本文详细介绍了如何利用HHD Device Monitoring Studio从零开始构建高效数据监控系统。涵盖基础架构设计、核心功能解析、实战部署指南及高级数据分析技术,帮助用户实现非侵入式监控,提升设备调试和网络协议分析效率。特别适合物联网和工业自动化领域的开发者与运维人员。

weixin_29201859的博客 327

674. 最长连续递增序列【 力扣(LeetCode) 】

题目要求找到数组中最长的连续递增子序列的长度。使用双指针法遍历数组,当发现非递增元素时记录当前递增序列长度并重置起始位置。例如,数组[1,3,5,4,7]的最长连续递增序列是[1,3,5],长度为3。时间复杂度为O(n),空间复杂度为O(1)。

yyh520025的博客 438

Unitree G1仿人机器人协同搬箱:从仿真搭建到多机协同部署完整指南

Unitree G1仿人机器人协同搬箱技术方案摘要 本文提供了一套完整的Unitree G1人形机器人协同搬箱解决方案,涵盖从仿真环境搭建到多机协同部署的全流程。核心内容包括: 双仿真环境配置:同时搭建Gazebo+ROS Noetic基础仿真环境与Isaac Gym+Mujoco高性能RL训练环境,支持Sim2Sim迁移验证 训练框架搭建:详细配置unitree_rl_gym框架,提供PPO算法定制化训练流程和参数优化方案 数据集应用:整合宇树开源真机数据集(UnifoLM-WBT-Dataset)~~~

huanghm88的专栏 471

力扣题解系列:128. 最长连续序列

题目:128. 最长连续序列 题目描述: 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例: 输入: [100, 4, 200, 1, 3, 2] 输出: 4 解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 解题思路: 对于在数组中的元素i,若i-1或者i+1也在数组中,则它们在一个连续序列中。但是同时考虑i-1和i+1就比较麻烦,而且在数组中查找元素的时间复杂度为O(n),不满足题目要求。于是可以只考虑i+1,这样做的前提条件是找到每个连

qq_38813052的博客 464

Ubuntu零基础入门到精通【1.1讲】:什么是 Ubuntu?一文带你彻底搞懂!

🏆 本文收录于 《滚雪球学 Ubuntu》 专栏。 本专栏面向有一定计算机基础,但尚未系统学习 Linux / Ubuntu 的读者,采用“滚雪球式学习法”:先装好、再会用、再理解、再优化、再实战,带你从第一次进入 Ubuntu 桌面 / 终端开始,逐步掌握 Ubuntu 的日常使用、命令操作、软件安装、系统配置、开发环境搭建与服务器部署能力。

**My Coding Family** 5687

vue2/3 - 详细实现高德地图轨迹回放,vue高德地图车辆历史行驶轨迹播放,在地图上绘制行程轨迹|起点和终端的路程绘制|用户运动轨迹绘制及播放等(支持开始/暂停、进度条拖放、控制播放轨迹的倍速等)

vue2,vue3,nuxt,高德地图,轨迹,vue高德地图轨迹回放,历史轨迹回放,轨迹回放功能支持倍速及进度条拖拽,VUE高德地图轨迹回放、倍速调整、进度条拖拽,vue3高德地图轨迹回放,Vue实现地图路径回放,vue中使用高德地图实现历史轨迹回放并能控制播放轨迹的倍速,多条轨迹陆续播放,巡航轨迹做带进度条和倍速的轨迹回放,Vue高德地图路径回放,历史轨迹回放并能控制播放轨迹的倍速,使用高德地图实现轨迹播放和进度条控制,vue高德地图如何实现轨迹回放,高德地图做轨迹绘制用什么api,高德轨迹API,驾车轨

✅ 精选推荐文章 1万+

力扣LeetCode 128. 最长连续序列

力扣LeetCode 128. 最长连续序列

weixin_63171335的博客 222

推荐系统[八]算法实践总结V3:重排在快手短视频推荐系统中的应用and手淘信息流多兴趣多目标重排技术

快手推荐系统包括了传统的召回、粗排、精排、Learning To Rank 的多目标排序、多目标预估等技术环节。而在这些模块之后的技术环节就属于重排序,主要包括手机端和服务端两部分。服务端通过传统服务器部署重排服务,包括序列重排、多源内容混排、多样性模块。端上部分包括端上重排模型和端上重排策略两部分。重排技术是快手十分重要的技术环节,它的发展速度远快于其他排序环节,属于较新的技术范畴。整个序列的价值并非单 item 效果的累计,如何使得序列价值最大化;

丨汀、的博客 1061

力扣(LeetCode)100题:128.最长连续序列

特点说明时间复杂度 O(n)每个数字最多被访问两次(一次在外层循环,一次在while中),均摊 O(1)空间复杂度 O(n)需要额外集合存储去重后的数字无需排序完全基于哈希查找,避免 O(n log n) 排序开销自动去重集合天然消除重复元素干扰。

sweet_ran的博客 573

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

代码训练LeetCode(5)最长连续序列

这个问题是在寻找最长连续序列的长度,但不要求这些序列在原数组中是连续的。要在 O(n) 时间复杂度内解决这个问题,我们可以利用哈希表(在 C 中通常使用散列表或字典类型的数据结构)。

梅花香自苦寒来,宝剑锋从磨砺出。 1442

精雕软件(JDpaint) 5.5 绿色版

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

【LeetCode】最长连续序列

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3446

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

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

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

Dubhehug的博客 315

LeetCode 力扣 128. 最长连续序列

题目描述(困难难度) 给一个数组,求出连续的数字最多有多少个,时间复杂度要求是 O(n)。 解法一 首先想一下最直接的暴力破解。我们可以用一个 HashSet 把给的数组保存起来。然后再考虑数组的每个数,比如这个数是 n,然后看 n + 1 在不在 HashSet 中,然后再看 n + 2 在不在,接下来 n + 3、n + 4 直到在 HashSet 中找不到,记录当前的长度。然后继续考虑下一...

wind_liang的博客 1016

【中等】力扣算法题解析LeetCode298:二叉树最长连续序列

LeetCode 298题要求在二叉树中寻找严格递增1的最长连续序列路径。采用深度优先搜索(DFS)递归遍历,若当前节点是父节点的连续后继(值+1),则延长序列长度,否则重置为1。全局变量maxLen记录最大值。时间复杂度O(n),空间复杂度O(h)。Java代码通过递归实现,初始化maxLen=1,递归中更新长度并比较最大值,最终返回最长路径长度。

ylumwd的博客 391

每日一题一一Leetcode128. 最长连续序列 - 力扣

好,那么如果num-1不存在,那么说明num有资格,作为数字连续序列的开头,我们就不断询问num+1,num+2,num+3,……在不在集合中,看看什么时候停下来,然后,维护最长序列的长度即可。问这个的目的是判断当前这个num有没有资格作为数字连续序列的开头,你想,如果num-1都存在,那么你以num为头去找一个数字连续序列,那肯定不会是最长的。首先,数组中是有可能出现重复的数字,但是重复的数字其实并不影响我们找数字连续的最长序列,因为再多相同的也只能算一个长度,所以,我们可以先对数组进行一个?

blue的博客 647

LeetCode第 128 题:最长连续序列(C++)

128. 最长连续序列 - 力扣(LeetCode) 先不考虑时间复杂度要求:排序加去重加遍历 class Solution { public: int longestConsecutive(vector<int>& nums) { if(nums.empty()) return 0; sort(nums.begin(), nums.end()); int idx = unique(nums.begin(), nums.en

zj 716
上一篇: 【高性能服务器】多线程并发模型
下一篇: 【力扣】赎金信
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值