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

leetcode128-最长连续序列

leetcode 128
在这里插入图片描述

思路

  • 排序
    排序后的数组能让我们更容易地判断是否有连续的数字。通过排序,我们可以保证相邻的数字比较大小时,如果它们相差 1,那么它们是连续的
  • 去重
    由于题目中可能存在重复的数字(例如 [1, 2, 2, 3, 4]),我们需要在计算连续序列时忽略重复的元素。我们可以使用 if (nums[i] === nums[i - 1]) continue; 语句来跳过重复的元素
  • 遍历并计算最长连续子序列
    初始化两个变量:max 用于记录当前找到的最长连续序列的长度,len 用于记录当前连续序列的长度
    从数组的第二个元素开始遍历,判断当前数字与前一个数字的差异:
    如果当前数字和前一个数字相差 1,说明是连续的序列,可以增加当前连续序列的长度(len++)
    如果当前数字和前一个数字不相差 1,说明连续序列断开了,我们需要更新 max 为当前最大值,并将 len 重置为 1,表示重新开始计算新的连续序列
    最后,遍历结束后,还需要检查最后的 len 是否是最长的连续序列,确保返回正确的最大值

实现

var longestConsecutive = function (nums) {if (!nums.length) return 0// 排序const newNums = nums.sort((a, b) => a - b);let max = 1;let len = 1;for (let i = 1; i < newNums.length; i++) {if (nums[i] === nums[i - 1]) {continue;} else if (nums[i - 1] === nums[i] - 1) {len++} else {// 不连续,重制max = Math.max(len, max)len = 1;}}return Math.max(max, len)
};
http://www.xdnf.cn/news/2751.html

相关文章:

  • 聊天室系统:多任务版TCP服务端程序开发详细代码解释
  • Qt C++数据库实验
  • FPGA-数字时钟
  • whois为什么有时会返回两个不同的域名状态
  • 【Linux】Java 开发者的 Linux 常用命令指南
  • 2024ICPC成都题解
  • Golang实现函数默认参数
  • 人工智能数学基础(一):人工智能与数学
  • 动态规划问题 -- 斐波那契数列模型(解码方法)
  • etcd 的安装及使用
  • 软件评测师考点重点知识
  • ubuntu安装docker,conda,tmux,btop,nvitop
  • 一种用于从视网膜图像中识别疾病的 BERT 式自监督学习 CNN
  • 大模型训练平台:重构 AI 研发范式的智慧基建
  • MCU内存映射技术详解
  • python数据分析(五):Pandas 数据检索技术
  • 鸢尾花(Iris)数据集的多模型分类与可视化分析工具
  • openai agents sdk实战-基于Ollama+qwen2.5+milvus+bge-large-zh-v1.5实现本地知识库
  • 在 C# .NET 中驾驭 JSON:使用 Newtonsoft.Json 进行解析与 POST 请求实战
  • 动态规划
  • 在g2o中,顶点(Vertex)和边(Edge)插入到概率图的流程
  • 迈瑞医疗:国际业务增长21.28% 发展中国家成重要增长引擎
  • 如何修复卡在恢复模式下的 iPhone:简短指南
  • 配置管理平台Nacos01:基础安装教程和启动运行
  • 第十五届中国国际道路交通安全产品博览会回顾
  • 2025年ISA Trans SCI2区TOP:超级哈里斯鹰算法Super-HHO+高功率机车悬挂载荷偏差控制,深度解析+性能实测
  • 5G育种技术之植物性状订制
  • 智慧健康养老实训室建设方案:科技引领养老健康服务人才培养
  • 第十六节:开放性问题-Vue与React Hooks对比
  • 使用阿里云 CDN 保护网站真实 IP:完整配置指南