47(牛客Top100)-128.最长连续子序列

2023-05-16

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

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

思路:
方法1: 利用set集合

    public int longestConsecutive(int[] nums) {
        HashSet<Integer> set = new HashSet<>();
        //1.利用set去重
        for (int i = 0; i < nums.length; i++) {
            set.add(nums[i]);
        }
        //2.定义变量,最长子序列
        int longestStreak  = 0;
        //3.遍历set集合,利用set的无重复性,更新最长子序列
        for (int num : set) {
            //当前元素-1不在集合中执行
            if (!set.contains(num - 1)) {
                int currentNum = num;
                int currentN = 1;
                //当前元素+1在集合中,更新当前的最长子序列
                while (set.contains(currentNum + 1)) {
                    currentNum += 1;
                    currentN += 1;
                }
                longestStreak  = Math.max(longestStreak , currentN);
            }
        }
        return longestStreak ;
    }

时间复杂度:O(n)
空间复杂度:O(n)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

47(牛客Top100)-128.最长连续子序列 的相关文章

  • MVC web项目中引入jquery插件

    MVC web项目中引入jquery插件 1 下载jquery https jquery com 看到这样的文档 xff0c 直接CTRL 43 S保存到自己的文件夹 2 将文件夹中的js文件直接拖拽导入到项目中的web文件下 xff0c
  • 27(牛客Top100)-62. 不同路径

    一个机器人位于一个 m x n 网格的左上角 xff08 起始点在下图中标记为 Start xff09 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 xff08 在下图中标记为 Finish xff09 问总共有多少条不同
  • 28(牛客Top100)-64. 最小路径和

    给定一个包含非负整数的 m x n 网格 grid xff0c 请找出一条从左上角到右下角的路径 xff0c 使得路径上的数字总和为最小 说明 xff1a 每次只能向下或者向右移动一步 思路 xff1a 动态规划 1 状态定义 初始化二维数
  • 30(牛客Top100)-72. 编辑距离

    给你两个单词 word1 和 word2 xff0c 请你计算出将 word1 转换成 word2 所使用的最少操作数 你可以对一个单词进行如下三种操作 xff1a 插入一个字符 删除一个字符 替换一个字符 思路 xff1a 动态规划 1
  • 29(牛客Top100)-70.爬楼梯

    假设你正在爬楼梯 需要 n 阶你才能到达楼顶 每次你可以爬 1 或 2 个台阶 你有多少种不同的方法可以爬到楼顶呢 xff1f 注意 xff1a 给定 n 是一个正整数 思路 xff1a 方法1 xff1a 动态规划 span class

随机推荐

  • 31(牛客Top100)-75.颜色分类

    给定一个包含红色 白色和蓝色 xff0c 一共 n 个元素的数组 xff0c 原地对它们进行排序 xff0c 使得相同颜色的元素相邻 xff0c 并按照红色 白色 蓝色顺序排列 此题中 xff0c 我们使用整数 0 1 和 2 分别表示红色
  • spring boot面试总结

    spring boot xff08 1 xff09 新建springboot项目 xff08 2 xff09 springboot整合mybatis实现增删改查 1 概述 1 1 springboot介绍 Spring Boot 是 Spr
  • [Android] 以singleInstance模式加载的Activity怎么接收以Bundle方式传递过来的参数 By onNewIntent() but not onResum

    问题来自这儿 xff0c Bundle在接收时未更新 xff0c http blog csdn net dadoneo article details 8164058 虽然可以暂时解决问题 xff0c 但并未说到根本原因 xff0c 下面就
  • 33(牛客Top100)-78.子集

    给你一个整数数组 nums xff0c 数组中的元素 互不相同 返回该数组所有可能的子集 xff08 幂集 xff09 解集 不能 包含重复的子集 你可以按 任意顺序 返回解集 思路 方法1 xff1a 二进制排序 xff08 字典排序 x
  • 34(牛客Top100)-79.单词搜索

    给定一个 m x n 二维字符网格 board 和一个字符串单词 word 如果 word 存在于网格中 xff0c 返回 true xff1b 否则 xff0c 返回 false 单词必须按照字母顺序 xff0c 通过相邻的单元格内的字母
  • 35(牛客Top100)-84.柱状图中最大的矩形

    给定 n 个非负整数 xff0c 用来表示柱状图中各个柱子的高度 每个柱子彼此相邻 xff0c 且宽度为 1 求在该柱状图中 xff0c 能够勾勒出来的矩形的最大面积 思路 xff1a 方法1 xff1a 栈 43 邵兵 span clas
  • 36(牛客Top100)-85.最大矩阵

    给定一个仅包含 0 和 1 大小为 rows x cols 的二维二进制矩阵 xff0c 找出只包含 1 的最大矩形 xff0c 并返回其面积 思路 xff1a 先抄下来 xff0c 我也不懂 方法1 xff1a 单调栈 span clas
  • 新建springboot项目

    1 新建项目 xff0c 选择Spring Initializr 2 直接finish xff0c 然后就等待下载各种包 xff0c 大约10分钟左右 3 包变绿后 xff0c pom xml中导入web依赖 span class toke
  • springboot整合mybatis实现增删改查

    1 新建springboot项目 xff0c 连接数据库 2 导入依赖 span class token generics span class token punctuation lt span dependencies span cla
  • 37(牛客Top100)-94.二叉树的中序遍历

    给定一个二叉树的根节点 root xff0c 返回它的 中序 遍历 思路 xff1a 方法1 xff1a 递归 按照访问左子树 根节点 右子树的方式遍历这棵树 span class token keyword public span spa
  • 38(牛客Top100)-96.不同的二叉搜索树

    给你一个整数 n xff0c 求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种 xff1f 返回满足题意的二叉搜索树的种数 思路 xff1a 1 动态规划 动态方程 xff1a span class token
  • 40(牛客Top100)-101.对称二叉树

    给定一个二叉树 xff0c 检查它是否是镜像对称的 思路 xff1a 方法1 xff1a 递归 span class token keyword public span span class token keyword boolean sp
  • 39(牛客Top100)-98.验证二叉搜索树

    给你一个二叉树的根节点 root xff0c 判断其是否是一个有效的二叉搜索树 有效 二叉搜索树定义如下 xff1a 节点的左子树只包含 小于 当前节点的数 节点的右子树只包含 大于 当前节点的数 所有左子树和右子树自身必须也是二叉搜索树
  • Excel合并计算完成多表格数据汇总求和

    Excel合并计算完成多表格数据汇总求和 多表格数据汇总可以使用透视表 xff0c 使用函数 xff0c 今天读书屋OFFICE网陈飞老师分享一个通过合并计算完成多表格数据汇总方法 xff0c 合并计算分为两种情况 xff0c 一种情况是
  • Google Datastore 学习记录

    由于在google app engine 使用google cloud sql 是要收费的 xff0c 于是学习一下google提供的免费的非关系型数据库datastore 它的特点有 xff1a No planned downtime x
  • 41(牛客Top100)-104.二叉树的最大深度

    给定一个二叉树 xff0c 找出其最大深度 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数 说明 叶子节点是指没有子节点的节点 思路 xff1a 方法1 xff1a 深度优先搜索 span class token keyword p
  • 42(牛客Top100)-102.二叉树的层序遍历

    给你一个二叉树 xff0c 请你返回其按 层序遍历 得到的节点值 xff08 即逐层地 xff0c 从左到右访问所有节点 xff09 思路 xff1a 用队列按层次遍历 方法1 xff1a 广度优先搜索 span class token k
  • MySQL总结

    1 数据库基础知识 1 1 什么是MySQL MySQL是一个关系型数据库管理系统 xff0c MySQL是最好的 RDBMS Relational Database Management System xff0c 关系数据库管理系统 应用
  • 45(牛客Top100)-121.买卖股票的最优时间

    给定一个数组 prices xff0c 它的第 i 个元素 prices i 表示一支给定股票第 i 天的价格 你只能选择 某一天 买入这只股票 xff0c 并选择在 未来的某一个不同的日子 卖出该股票 设计一个算法来计算你所能获取的最大利
  • 47(牛客Top100)-128.最长连续子序列

    给定一个未排序的整数数组 nums xff0c 找出数字连续的最长序列 xff08 不要求序列元素在原数组中连续 xff09 的长度 请你设计并实现时间复杂度为 O n 的算法解决此问题 思路 xff1a 方法1 xff1a 利用set集合