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;
    }
}

补充:

相关推荐
地平线开发者21 小时前
J6B vio scenario sample
算法
BothSavage1 天前
Trae远程开发中DeepSeek自定义模型4054错误的排查与修复
算法
小林ixn1 天前
从暴力到KMP:一道题彻底搞懂字符串匹配的前世今生
算法
烬羽1 天前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
先吃饱再说2 天前
判断回文字符串,从一行代码到双指针优化
算法
黄敬峰2 天前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术2 天前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六2 天前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程