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

leetcode——最长连续序列(java)

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

解题方法:(哈希表)

1.经过分析得出用哈希表来解题,但是这道题需要我们使用O(n)的时间复杂度来进行解题,所以我们需要用到hashset

2.首先我们需要遍历数组将数组中的元素加入到hashset中,然后再遍历hashset

3.在遍历过程中我们首先需要确保当前指向的元素是否有比它更小的元素,有则跳过循环,无则开始检查比它大1的元素有多少个。

4.最后更新答案即可。

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> set = new HashSet<>();
        int ans = 0;
        if (nums.length < 2) return nums.length;
        for (int num : nums) {
            set.add(num);
        }
        for (int x : set) {
            if (set.contains(x - 1)) {
                continue;
            }
            int y = x + 1;
            while (set.contains(y)) {
                y++;
            }
            ans = Math.max(ans, y - x);
        }
        return ans;
    }
}


http://www.kler.cn/a/510819.html

相关文章:

  • Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
  • 第十三章:数据库技术
  • 2025年1月17日(点亮三色LED)
  • 计算机网络 (49)网络安全问题概述
  • 【QT用户登录与界面跳转】
  • 如何下载对应城市的地理json文件
  • 基于SSM的自助购药小程序设计与实现(LW+源码+讲解)
  • WPF 复杂页面布局及漂亮 UI 界面设计全解析
  • 二十三种设计模式-装饰器模式
  • 创建 pdf 合同模板
  • MYSQL的结构体的具体情况
  • python自动化测试断言详细实战代码
  • 【电视盒子】HI3798MV300刷机教程笔记/备份遥控码修复遥控器/ADB/线刷卡刷/电视盒子安装第三方应用软件
  • 内联变量(inline variables):在多个文件中共享全局常量
  • 力扣动态规划-4【算法学习day.98】
  • LeDeCo:AI自动化排版、设计、美化海报
  • 【c++丨STL】map/multimap的使用
  • 冲刺蓝桥杯之速通vector!!!!!
  • SpringBoot+Vue3快速开发平台、自研工作流引擎
  • Linux 历史指令快捷查询与指令
  • 机器学习-交叉验证
  • .Net Core微服务入门全纪录(四)——Ocelot-API网关(上)
  • 如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南
  • 3dmax LOGO的符号、意义和历史,渲染100邀请码1a12
  • 嵌入式硬件篇---基本组合逻辑电路
  • RIME-CNN-LSTM-Attention多变量多步时序预测Matlab实现