尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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] 输出9示例 3输入nums [1,0,1,2] 输出3方法1快排1、使用sort函数对nums进行排序(默认升序)nlogn。2、循环nums向量下标定义为i定义连续长度变量为k1和最大长度max_k判断nums[i]和nums[i1]是否连续。3、假如前后两个数字连续k1并且判断k是否大于max_k更新max_k。4、假如前后两个数字相等直接跳过本次循环。5、如果两个数字不连续更新k为14、持续循环nums向量直到结束返回max_k。class Solution { public: int longestConsecutive(vectorint nums) { //集合 int nnums.size(); if(n2) return n; unordered_setint mset; for(int i0;in;i){ mset.insert(nums[i]); } int k1; int max_kk; for(unordered_setint::iterator itmset.begin();it!mset.end();it){ if(mset.find(*it-1)mset.end()){ int num*it; while(1){ if(mset.find(num1)!mset.end()){ k; max_kmax_kk?max_k:k; num; }else{ k1; break; } } } } return max_k; } };方法2哈希查找1、创建一个set集合unordered_setintm_set定义连续的长度为k,最大长度为max_k。2、将nums的数全部插入m_set中。3、循环m_set容器的值定义每个值为it。4、在m_set容器中查找it的连续数字每找到一个k1更新max_k。5、循环结束 返回 max_k。该方法在最坏的情况下还是会达到O(n^2)的复杂度//假如有一个连续序列{987654321} 那么一次枚举都要从最大的那个数开始枚举最坏的情况时间复杂度O(n^2)优化方法//如果已知有一个 x,x1,x2,⋯,xy 的连续序列 而我们却重新从 x1x2 或者是 xy 处开始尝试匹配 那么得到的结果肯定不会优于枚举 x 为起点的答案 因此我们在外层循环的时候碰到这种情况跳过即可。 //由于我们要枚举的数 x 一定是在数组中不存在前驱数 x−1 的 不然按照上面的分析我们会从 x−1 开始尝试匹配 因此我们每次在哈希表中检查是否存在 x−1 即能判断是否需要跳过了。class Solution { public: int longestConsecutive(vectorint nums) { //集合 int nnums.size(); if(n2) return n; unordered_setint mset; for(int i0;in;i){ mset.insert(nums[i]); } int k1; int max_kk; for(unordered_setint::iterator itmset.begin();it!mset.end();it){ if(mset.find(*it-1)mset.end()){ int num*it; while(1){ if(mset.find(num1)!mset.end()){ k; max_kmax_kk?max_k:k; num; }else{ k1; break; } } } } return max_k; } };unordered_set常见函数函数作用std::unordered_setint uset;构造函数std::unordered_setint uset;插入元素uset.find(10);查找元素返回一个迭代器uset.erase(10);删除元素size_t size uset.size();返回容器的大小bool isEmpty uset.empty();判断容器是否为空uset.clear();清空容器
RELATED

相关推荐

Java大厂面经:Spring Cloud微服务+MCP+Agentic RAG三连问,水货程序员谢飞机大型翻车现场

Java大厂面经:Spring Cloud微服务+MCP+Agentic RAG三连问,水货程序员谢飞机大型翻车现场

Java大厂面经:Spring Cloud微服务MCPAgentic RAG三连问,水货程序员谢飞机大型翻车现场🎬 前言江湖传闻,有一号人物,姓谢,名飞机,Java圈内人称「八股文朗诵艺术家」——简单问题倒背如流&#xf…

📅 2026/10/19 13:43:01
鸿蒙 ArkTS 实战:Live Stream Script Helper 从智能助手到保存闭环完整解析

鸿蒙 ArkTS 实战:Live Stream Script Helper 从智能助手到保存闭环完整解析

鸿蒙 ArkTS 实战:Live Stream Script Helper 从智能助手到保存闭环完整解析 前言 Live Stream Script Helper 是一个面向 直播脚本助手 的鸿蒙 ArkTS 单页工具。它把主题输入、数量统计、辅助开关、备注和保存状态组织到一个移动端工作台中。 项目服务于 围绕商品…

📅 2026/10/15 17:36:58
HeyGem2.0(Duix-Avatar)本地数字人整合包技术部署与使用完整教程

HeyGem2.0(Duix-Avatar)本地数字人整合包技术部署与使用完整教程

前言 HeyGem(项目现更名 Duix-Avatar)是硅基智能开源 AI 数字人项目,可本地离线完成数字人形象、音色克隆与口播视频生成。原版开源项目依赖 Docker、WSL2 环境部署,国内网络环境下易出现拉取镜像失败、环境配置复杂等问题。社区…

📅 2026/10/5 18:06:04
MORE NEWS

更多资讯

📰

冷江电工证哪里考,电子证书怎么拿?实操考试心里没底怕挂科

冷江电工证哪里考,电子证书怎么拿?实操考试心里没底怕挂科 实操考试心里没底怕挂科?冷江电工证哪里考?这是很多人第一次报考时最怕的问题。你不是一个人在战斗,很多人都在担心考试内容会不会太难、会不会挂科、电子证书怎么拿。但别慌,下面我结合鹤壁地…

📰

麻城电工证在哪里报名的真实经历:外省证怎么转过来

麻城电工证在哪里报名的真实经历:外省证怎么转过来 之前考的证在外省能不能转过来?这是我最近收到最多的咨询,尤其是那些在外地打工、返乡就业的电工朋友。真实经历告诉我,很多老电工都遇到过证书“转不了、换不了、用不了”的问题,这事儿可不能小看。…

📰

西安哪里办电工证便宜官方回应怕考不过白交培训费

西安哪里办电工证便宜官方回应怕考不过白交培训费 怕考不过白交培训费?这事儿可真让不少想考电工证的兄弟头疼。特别是现在特种作业证越来越受重视,不光是找工作、升职加薪,就连日常的安全作业都离不开它。但问题来了, 西安哪里办电工证便宜…

📰

容城县电工证考证报名怎么考?工地太忙根本没时间复习考试,全国通用证怎么拿?

容城县电工证考证报名怎么考?工地太忙根本没时间复习考试,全国通用证怎么拿? 工地太忙根本没时间复习考试,很多在容城县做电工的朋友都面临这样的问题。电工证不仅关系到能否上岗,更直接影响到工资待遇和职业发展。但很多人不知道的是,容城县电工证考证…

📰

电工证年审超过怎么应对?通过率揭秘助你一次通关

电工证年审超过怎么应对?通过率揭秘助你一次通关 实操考试心里没底怕挂科?电工证年审超过的考生不在少数,但真正知道怎么准备的却寥寥无几。尤其对于刚毕业的鹤壁工程类学生来说,电工证年审超过后,如何应对考试、提升通过率,是摆在眼前的难题。本文结合…

📰

贵阳市电工证快速办理多少钱 考不过白交钱?选对机构是关键

贵阳市电工证快速办理多少钱 考不过白交钱?选对机构是关键 怕考不过白交培训费?贵阳市电工证快速办理多少钱?很多人在办理电工证时最怕的就是交了钱,最后还是考不过,白白浪费时间、精力和金钱。今天就从实际出发,讲讲贵阳市电工证快速办理的全流程、费…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬