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

128. 最长连续序列

这道题最简单的想法就是排序+计数,但是复杂度为O(nlogn),不符合题意
于是采用哈希表的方法
将所有数字存放在哈希表中,然后开始逐个寻找。
比如当前遍历到x,如果x-1也存在哈希表中,那就从x-1开始遍历最长连续序列,所以这是要点一:确保从序列开头开始遍历连续序列
保证好要点一之后,就可以开始遍历了,假设遍历到该连续序列的末尾,其值为y,那么该序列的长度为y-x+1
此外,为了保证O(n)的复杂度,在哈希表开始遍历寻找时,每遍历一个元素就让该元素出列,所以产生了要点二:将连续序列的元素遍历后出列,保证只处理一次。
例如在示例[200,4,100,1,2,3]中,出列顺序为[200,100,1,2,3,4]

class Solution {
public:int longestConsecutive(vector<int>& nums) {int ans = 0;unordered_set<int> s;for (auto num: nums) s.insert(num);for (auto x: nums) {if (s.count(x) && !s.count(x - 1)) {auto y = x;s.erase(x);while (s.count(y + 1)) {y++;s.erase(y);}ans = max(ans, y - x + 1);}}return ans;}
};
http://www.lryc.cn/news/229283.html

相关文章:

  • 设计模式-设计原则
  • MongoDB基础运维
  • 侧击雷如何检测预防
  • 检索搜索信息能力
  • 设计大咖亲授:Figma中文环境设置全攻略!
  • 华为Hcia-数通学习(更改策略)
  • 数据校验:Spring Validation
  • CSS怎么选择除了第一个子元素外的其余同级子元素
  • Mac下eclipse配置JDK
  • 基于springboot实现体育场馆运营平台项目【项目源码】
  • 优雅的Java编程:将接口对象作为方法参数
  • 一文简单聊聊protobuf
  • Unity Meta Quest 一体机开发(五):手势抓取概述
  • 传输层中的TCP和UPD协议
  • 插入排序算法(C++版)
  • Tracking vs. No-Tracking Queries
  • Centos7安装frps实现内网穿透
  • cryptopp Base64Encoder \n问题
  • 一种艺术风格的神经算法:总结与实现
  • 【Mysql系列】Mysql基础篇
  • C++面试题之C++中的指针参数传递和引用参数传递
  • [Android]Unresolved reference: appcompat
  • 网络运维Day14
  • Mac常用软件安装
  • node 文件上传操作(前端 form表单上传 formData上传 后端 node 使用express+multer)
  • 容器数据卷+MYSQL实战
  • 开发者测试2023省赛--UnrolledLinkedList测试用例
  • HoudahGeo 6 for Mac:掌控地理位置信息的强大工具
  • Xilinx Artix7-100T低端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持
  • C与汇编深入分析