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

LeetCode - 128. 最长连续序列

题目

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

思路

这题要求O(n)时间复杂度,所以不能用排序的方法。我的思路是使用哈希表来实现常数时间的查找。

具体做法是:首先将所有元素放入哈希集合中,然后对每个元素,我们尝试寻找以它为起点的连续序列。为了避免重复计算,我们只从'序列的起点'开始计算 - 也就是当一个数字x在集合中,但x-1不在集合中时,才开始寻找连续序列。

这样的话,对于每个元素,我们最多只会执行一次'寻找序列'的操作,保证了总体O(n)的时间复杂度。

读者可能出现的错误写法

class Solution {
public:int longestConsecutive(vector<int>& nums) {if(nums.empty()){return 0;}unordered_set<int> set(nums.begin(),nums.end());int longest = 0;for(auto num : nums){if(!set.count(num-1)){int current = num;int curlength = 1;while(set.count(current+1)){current++;curlength++;}longest = max(longest,curlength);}}return longest;}
};

for(auto num : nums)这个情况可能会造成超时的问题,因为nums可能带有重复的元素,所以要把nums换成set

正确写法

class Solution {
public:int longestConsecutive(vector<int>& nums) {if(nums.empty()){return 0;}unordered_set<int> set(nums.begin(),nums.end());int longest = 0;for(auto num : set){if(!set.count(num-1)){int current = num;int curlength = 1;while(set.count(current+1)){current++;curlength++;}longest = max(longest,curlength);}}return longest;}
};
http://www.xdnf.cn/news/1392067.html

相关文章:

  • Vue3+Ant-design-vue 实现树形穿梭框
  • BlueKing-ci
  • 币安创始人赵长鹏:香港需要更广泛的加密货币产品来与美国和阿联酋竞争
  • docker-相关笔记
  • Cesium 入门教程(十三):粒子系统实例
  • 2025年03月 Scratch 图形化(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • springboot中循环依赖的解决方法-使用反射
  • mysql双机热备(主主模式)
  • Java项目实现【记录系统操作日志】功能
  • 基于FPGA的DDR3读写实验学习
  • 《ArkUI 记账本开发:状态管理与数据持久化实现》
  • el-table合并列实例
  • 光谱相机多层镀膜技术如何提高透过率
  • (二)Python语法基础(下)
  • 响应式编程框架Reactor【2】
  • Redis开发06:使用stackexchange.redis库结合WebAPI对redis进行增删改查
  • Vue3 全面介绍
  • 技术SEO修复ROI最大化:有限资源下的优先排序策略
  • 【笔记】Linux高性能网络详解之DPDK
  • uni-app 常用钩子函数:从场景到实战,掌握开发核心
  • 算法题打卡力扣第169题:多数元素(easy)
  • 单点登录(SSO)前端(Vue2.X)改造
  • MYSQL-索引(上)
  • week5-[二维数组]对角线
  • 平安健康平安芯医AI解析:7×24小时问诊+95%诊断准确率,人文温度短板与医生效能提升引热议
  • DNS域名系统
  • Less嵌套写法
  • 无人机中的坐标系理解:机体坐标系,东北天(NED)坐标系,世界大地(WGS84)坐标系
  • 换公司如何快速切入软件项目工程
  • 在 Ubuntu 24.04 Linux 上安装 Basemark GPU Benchmark 的步骤