LeetCode【128】最长连续序列

题目:

分析:

1、最长连续序列的长度为 y-x+1,如1-4:4-1+1 = 4

2、不要被这里的On误导,不敢使用双层循环

3、只要找到最小的数值,并由此开始计算,不产生重复计算,则为On

代码:

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

        int max = 0;
        for (int i = 0; i < nums.length; i++) {
            if (!set.contains(nums[i] - 1)) {
                int y = nums[i] + 1;
                while (set.contains(y)) {
                    y++;
                }
                max = Math.max(max, y-nums[i]);
            }
        }

        return max;
    }
相关推荐
程序员黑豆4 小时前
什么是JDK以及JDK都由哪些部分组成呢
java·前端·ai编程
估值探索者4 小时前
【Python实时盯盘与预警 #08】成交额突然放大2倍?Python窗口比较抓异动
java·开发语言·python
凤山老林4 小时前
Spring Boot 定时任务进阶:动态 Cron 与集群防重实战
java·spring boot·后端·定时任务·集群定时任务
余生皆假期-5 小时前
傅里叶变换和拉普拉斯变换
人工智能·算法·机器学习
xbgRS5 小时前
spring整合mybaits
java·spring·mybatis
数模竞赛Paid answer6 小时前
2026年五一杯数学建模C题边坡预警问题求解全过程文档及程序
算法·数学建模·五一杯
hold?fish:palm6 小时前
20 旋转图像
c++·算法·leetcode
Tim_106 小时前
【C++】024、new[]与delete[]配对使用
java·开发语言
小黑技术栈7 小时前
Java前端基础到入门——16day
java·开发语言·前端
NoteStream7 小时前
【C语言基础】分支和循环(上)
c语言·开发语言·c++·经验分享·笔记·算法·c#