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

A.每日一题——128. 最长连续序列

题目链接:128. 最长连续序列(中等)

算法原理:

解法:哈希表

23ms击败91.35%

时间复杂度O(N)

题目要求时间复杂度是O(N),那么我们就不能直接调用Arrays.sort直接排序,因为这样的话时间复杂度会飙升到O(NlogN)

由于让求的是最长连续序列,重点在连续,意味着同样的数,只要出现一次就够用了,所以可以去重,省下大量的遍历

①把所有数全扔进Set容器里,这样可以用O(1)来判断这个数是否在nums中

②如果x-1在哈希集合中,那么就不能以x为起点了,因为以x-1为起点计算出的序列长度一定比以x为起点计算出的序列长度要长!所以直接跳过即可,可以避免大量的重复计算!

比如nums=[5,2,4,3],从3开始找到的序列是3,4,5,而从2开始找到的是2,3,4,5

③小优化:当以当前x为起点找到的序列长度超过原数组长度一半时,那么就无需再找了,因为没有序列能比这个还长了,直接返回结果即可

Java代码:

class Solution { public int longestConsecutive(int[] nums) { Set<Integer> hash=new HashSet<>(); //把nums里的元素全扔哈希表里 for(int x:nums) hash.add(x); int ret=0; for(int x:hash){ //如果x前面还有更小的,那么当前x一定不能作最长连续子序列的起点,直接跳过 if(hash.contains(x-1)) continue; //x是序列的起点 int y=x+1; while(hash.contains(y)) y++; //循环结束之后,y-1是最后一个在哈希集合的数 //从x到y-1一共y-x个数 ret=Math.max(ret,y-x); //小优化:当前连续子序列长度超过原数组的一半时 //不可能再有比这个长的了,直接返回 if(ret*2>=hash.size()) break; } return ret; } }
http://www.jsqmd.com/news/253451/

相关文章:

  • 塑料管材挤出机结构设计
  • 收藏!DeepSeek引领大模型爆发,AI工程师迎黄金期,薪资天花板再刷新
  • BurpSuite 保姆级使用指南|纯干货分享
  • 收藏级|后端研发视角:AI在保险业务的落地实践,RAG架构从基础到混合式演进全解析
  • django-flask基于python篮球比赛CBA联赛管理系统pycharm -Vue
  • #智慧景区#多场景管理系统,一体系,多场景,全赋能
  • 单北斗GNSS技术在变形监测中的应用及其位移监测优势解析
  • django-flask基于python减肥健身养生人士饮食营养管理系统
  • MMC-HVDC仿真模型:探究21电平NLM与均压控制下的双端及多端直流输电系统基础模型
  • 三相电压型PWM整流器仿真分析与研究:关键技术及应用探索
  • 氢气压缩机远程监控系统方案
  • Qt集成Echarts百度地图应用开发综合源码:功能强大且高度可定制的地图封装类
  • 【深度】2024-2025 AI 行业下半场:告别“参数竞赛”,卷向“落地”与“Agent”
  • Linux ss命令比lsof命令快的原因剖析
  • 在隐私合规时代 如何实现精准风控?
  • 《从局部到全局:协同推理负载分配的深度优化指南》
  • 近几年持证人薪资高20%的CAIE证书,这些坑千万别踩
  • 网络安全知识图谱:从核心定义到技术全景,构建你的系统性认知与防范体系
  • 全网最全2026本科生AI论文写作软件TOP10:开题报告文献综述必备
  • VP引导定位软件-平移九点标定生产验证
  • 网络安全核心技术体系构建:从基础框架到关键演进的深度总结
  • Windows 系统入侵排查实战指南:一步步揪出恶意入侵痕迹
  • 网络安全与黑客技术的终极限定:核心领域全解析与成为“白帽黑客”的专业路径
  • 网络安全硬核盘点:五大关键技术深度解读与前沿实践指南
  • 论文降重神器:7款AI改写工具对比评测
  • Vue3+Vite5 集成 Cesium 超详细教程(避坑版)
  • 智能论文改写:7大AI模型效果解析与避坑指南
  • WPF+SQLite+MVVM Demo
  • 一篇就够了!网络安全终极清单:定义、核心技术与防范策略全解析(附学习资源)
  • AI论文写作从零到一:9款神器实测手把手指南,一键生成真实文献综述