LeetCode 热题 100-连续最长序列

题目:

解析:

HashSet + 智能遍历
去重与快速查找

  • 将所有数字放入 HashSet(O(1) 查找)
  • 同时去除了重复数字(重复数字不影响连续序列长度)

关键优化:只从序列起点开始查找

  • 对于一个数字 num,如果 num-1 存在于集合中,说明 num 不是某个连续序列的起点
  • 我们只从序列的最小值开始查找
  • 这样可以确保每个连续序列只被遍历一次

算法步骤

  1. 将所有数字存入 HashSet

  2. 遍历 HashSet 中的每个数字 num

  3. 如果 num-1 不在 HashSet 中(num 是序列起点)

  • 初始化当前数字 current = num
  • 初始化当前序列长度 currentStreak = 1
  • 循环检查 current+1 是否在 HashSet 中,如果在,current++,currentStreak++
  • 更新最长序列长度
  1. 返回最长序列长度

代码:

java 复制代码
class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
        for (int num : nums) {
            num_set.add(num);
        }

        int longestStreak = 0;

        for (int num : num_set) {
            if (!num_set.contains(num - 1)) {
                int currentNum = num;
                int currentStreak = 1;

                while (num_set.contains(currentNum + 1)) {
                    currentNum += 1;
                    currentStreak += 1;
                }

                longestStreak = Math.max(longestStreak, currentStreak);
            }
        }

        return longestStreak;
    }
}

补充:

相关推荐
南风知我意9572 小时前
【前端面试4】框架以及TS
前端·面试·职场和发展
2301_822377652 小时前
模板代码异常处理
开发语言·c++·算法
hcnaisd22 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
多恩Stone2 小时前
【3DV 进阶-12】Trellis.2 数据处理脚本细节
人工智能·pytorch·python·算法·3d·aigc
wfeqhfxz25887822 小时前
【目标检测系列】:基于YOLOv10n的MAN卡车超载检测系统·结合FasterCGLU与WFU优化算法_1
算法·yolo·目标检测
生成论实验室2 小时前
生成式通用智能(GAGI):基于《易经》状态空间的认知架构
人工智能·神经网络·算法·架构·信息与通信
如意猴2 小时前
002【模拟】--蛇形方阵、字符串展开
算法
We་ct2 小时前
LeetCode 242. 有效的字母异位词:解法解析与时空优化全攻略
前端·算法·leetcode·typescript
执着2592 小时前
力扣hot100 - 104、二叉树的最大深度
算法·leetcode·职场和发展