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

力扣100题之128. 最长连续序列

方法1 使用了hash

方法思路
使用哈希集合:首先将数组中的所有数字存入一个哈希集合中,这样可以在 O(1) 时间内检查某个数字是否存在。
寻找连续序列:遍历数组中的每一个数字,对于每一个数字,
检查它是否是某个连续序列的起点(即检查 num - 1 是否存在于集合中)。
如果不是起点,则跳过;
如果是起点,则开始向后检查连续的数字(num + 1, num + 2 等),并记录序列的长度。
更新最大长度:在遍历过程中,不断更新记录的最大序列长度。
这种方法确保每个数字最多被访问两次(一次在遍历数组时,一次在检查连续序列时),因此时间复杂度为 O(n)。

    public int longestConsecutive(int[] nums) {/*  方法思路使用哈希集合:首先将数组中的所有数字存入一个哈希集合中,这样可以在 O(1) 时间内检查某个数字是否存在。寻找连续序列:遍历数组中的每一个数字,对于每一个数字,检查它是否是某个连续序列的起点(即检查 num - 1 是否存在于集合中)。如果不是起点,则跳过;如果是起点,则开始向后检查连续的数字(num + 1, num + 2 等),并记录序列的长度。更新最大长度:在遍历过程中,不断更新记录的最大序列长度。这种方法确保每个数字最多被访问两次(一次在遍历数组时,一次在检查连续序列时),因此时间复杂度为 O(n)。*///        1.哈希集合初始化:将数组中的所有数字存入哈希集合 numSet 中,以便快速查找。Set<Integer> hashSet = new HashSet<>;for(int num:nums){hashSet.add(num);}int longesetStreak = 0;
//        2.遍历集合:对于集合中的每一个数字,检查它是否是某个连续序列的起点(即 num - 1 不在集合中)。for(int num:hashSet){//        3.扩展序列:如果是起点,则向后扩展序列,计算当前连续序列的长度 currentStreak。if(!hashSet.contains(num-1)){int currentNum =num;int currentStreak=1;while(hashSet.contains(currentNum+1)){currentNum++;currentStreak++;}//        4.更新最大值:比较并更新最长序列长度 longestStreak。longesetStreak=Math.max(longesetStreak,currentStreak);}}//        5.返回结果:最终返回最长序列的长度。return longesetStreak;}

方法二 排序法(时间复杂度大)

public int longestConsecutive(int[] nums) {// 处理边界情况:空数组直接返回0if (nums.length == 0) return 0;// 对数组排序(升序),便于后续连续元素判断Arrays.sort(nums);int maxLength = 0;  // 记录最长连续子序列长度int currentLength = 1;  // 当前连续子序列长度,初始为1(至少有一个元素)// 从第二个元素开始遍历(索引1到末尾)for (int i = 1; i < nums.length; i++) {int currentNum = nums[i];int prevNum = nums[i - 1];if (currentNum == prevNum) {// 跳过重复元素(排序后相邻重复,不影响连续性判断)continue;} else if (currentNum == prevNum + 1) {// 当前元素与前一个元素连续,长度加1currentLength++;} else {// 连续序列中断,更新最长长度,并重置当前长度maxLength = Math.max(maxLength, currentLength);currentLength = 1;}}// 处理最后一次连续序列(遍历结束后可能还有未比较的长度)return Math.max(maxLength, currentLength);
}

在这里插入图片描述

相关文章:

  • Python爬虫实战:研究RoboBrowser库相关技术
  • .NET 原生驾驭 AI 新基建实战系列(六):Pinecone ── 托管向量数据库的向量数据库的云原生先锋
  • Abaqus载荷与边界条件(Load BC)
  • 每日算法刷题Day23 6.5:leetcode二分答案3道题,用时1h40min(有点慢)
  • 企业级AI迈入黄金时代,企业该如何向AI“蝶变”?
  • RocketMQ 5.0 可观测能力升级:Metrics 指标分析
  • IP如何挑?2025年海外专线IP如何购买?
  • 嵌入式学习笔记DAY33(网络编程——TCP)
  • 量子计算+AI:特征选择与神经网络优化创新应用
  • Profinet转CAN网关与西门子PLC的互联互通基础操作流程
  • Cursor 工具项目构建指南: Uniapp Miniprogram 环境下的 Prompt Rules 约束
  • Java详解LeetCode 热题 100(27):LeetCode 21. 合并两个有序链表(Merge Two Sorted Lists)详解
  • [蓝桥杯]耐摔指数
  • 结合PDE反应扩散方程与物理信息神经网络(PINN)进行稀疏数据预测的技术方案
  • 大语言模型评测体系全解析(中篇):专项能力评测与行业垂直场景
  • 监测预警系统重塑隧道安全新范式
  • 2025年可持续发展与环境工程国际会议(SDEE 2025)
  • 分析vban的utlis中的helper方法(1)——数组
  • Next打包导出静态文件(纯前端),不要服务器端(node), 隐藏左下角调试模式
  • 平安养老险蚌埠中心支公司开展金融宣教活动
  • 网站建设的书籍有哪些/网络运营培训哪里有学校
  • 运城网站制作/网络软文是什么
  • 如何创建一个网站/网络营销品牌
  • 做论坛网站需要多少钱/广州网络公司
  • 宿州网站建设哪家好/磁力在线搜索引擎
  • 互联网趋势发展前景/网站关键词优化排名怎么做