当前位置: 首页 > news >正文

LeetCode 热题 100——3.字母异位词分组

🧑‍💻博主名称:鱼子星_
✅数据结构专栏:【数据结构】
✅算法竞赛专栏:【算法竞赛】
✅C++系列专栏:【C++从零开始系列】


128. 最长连续序列

【128. 最长连续序列】

题目描述

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


解题思路

💡解法一:排序去重

将数组排好序后使用unique函数去重,这样就可以保证升序的元素一直是相邻的,然后直接遍历数组,同时维护最长的连续即可

🗋 代码

classSolution{public:intlongestConsecutive(vector<int>&nums){if(nums.size()==0)return0;//排序+去重sort(nums.begin(),nums.end());intcnt=unique(nums.begin(),nums.end())-nums.begin();//统计最大长度intret=0;intt=0;for(inti=0;i<cnt-1;i++){if(nums[i]==nums[i+1]-1){t++;}else{ret=max(ret,t+1);t=0;}}ret=max(ret,t+1);returnret;}};

提交结果

💡解法二:哈希表

先将数组所有的元素放入自动去重的哈希表中,之后开始遍历原数组。遍历到i时刻就判断hash[nums[i] - 1]是否大于0,如果不是大于0,就代表当前元素是某个上升序列的开头。从这个元素的数值开始,不断往后判断hash[nums[i] + 1 * x]是否大于0,当遇到0时代表序列结束,更新最终结果即可。而如果hash[nums[i] - 1]等于0,就直接跳过即可。

LeetCode官方代码

classSolution{public:intlongestConsecutive(vector<int>&nums){unordered_set<int>num_set;for(constint&num:nums){num_set.insert(num);}intlongestStreak=0;for(constint&num:num_set){if(!num_set.count(num-1)){intcurrentNum=num;intcurrentStreak=1;while(num_set.count(currentNum+1)){currentNum+=1;currentStreak+=1;}longestStreak=max(longestStreak,currentStreak);}}returnlongestStreak;}};

提交结果

http://www.jsqmd.com/news/1091207/

相关文章:

  • OmenSuperHub终极指南:免费解锁惠普游戏本的隐藏性能
  • 西安人脸识别门禁:适合老旧小区改造的需求分析与选择
  • 【单片机毕业设计】 基于 STM32 的红外感应智能定时药盒设计,基于单片机的语音播报用药提醒装置开发(012901)
  • IEEE ACCESS投稿全流程解析:从初稿到检索的实战指南
  • 【论文阅读】Stable-RAG: Mitigating Retrieval-Permutation-Induced Hallucinations in Retrieval-Augmented Gen
  • 5分钟掌握QModMaster:免费开源的ModBus调试终极解决方案
  • CentOS7 Docker 离线部署 + Registry 私有仓库完整实操
  • 微信小程序安全审计实战:使用小锦哥进行自动化漏洞检测与深度防御
  • 日本风情lr预设|日系清新旅行人像海边街拍Lightroom下载lr调色风格
  • Python+Selenium端到端自动化测试实战:从POM设计到CI/CD集成
  • BerriAI/LiteLLM 开源项目深度解析:实现多模型统一调用、负载均衡与成本管理的标准化 API 代理实战指南
  • Defender Control完整指南:如何在Windows 10/11中永久禁用Windows Defender
  • ECCV 2026 | 从静态拟合到动态分配:AMG-Fuse 用模态贡献Mask破解恶劣天气下的融合难题
  • 永不消亡的“数字幽灵”:为什么都2026年了,这个30年前的漏洞依然无处不在?
  • Netcatty 开源跨平台 SSH 运维客户端完整技术实操指南
  • 5分钟掌握MGit:Android平台最强大的Git客户端全解析
  • 优选冰雪传奇点卡版!原汁原味复古设定,打造纯净开荒体验
  • 打破苹果生态壁垒:3步让Windows电脑成为AirPlay 2投屏中心
  • W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
  • 【云原生与DevOps】01-Docker从入门到实践:镜像、容器、网络三位一体
  • 我把整个代码库喂给 Claude Code,工具超 50 个就静默丢失,这个坑太阴了
  • 2.1 告别“单体应用”:为什么你的记账和炒股混在一起就是灾难
  • 大模型幻觉怎么治?引用溯源兜底实操
  • PostgreSQL 索引里到底存了什么?
  • MSP430FR5969 LaunchPad开发板:FRAM与超低功耗设计实战指南
  • SpringBoot 配置文件详细指南
  • 用 OllamaHub 让 Visual Studio Copilot 可以对接任意模型
  • 超链接以字段(Field) 的形式存储。每个超链接字段包含两个核心部分:
  • 德州仪器DRV2667压电触觉驱动器评估与开发全攻略
  • 2026高考志愿资料(本科+专科)免费分享