首页 > 编程语言 >【算法】【线性表】最长连续序列

【算法】【线性表】最长连续序列

时间:2023-12-11 21:56:51浏览次数:30  
标签:线性表 int res up down 算法 num numSet 序列

1  题目

给定一个未排序的整数数组num,找出最长连续序列的长度。

样例 1:

输入:

num = [100, 4, 200, 1, 3, 2]

输出:

4

解释:这个最长的连续序列是 [1, 2, 3, 4]. 返回所求长度 4

2  解答

public class Solution {
    /**
     * @param num: A list of integers
     * @return: An integer
     */
    public int longestConsecutive(int[] num) {
        // write your code here
        // 1、当数组为空或者无元素时
        if (num == null || num.length == 0) {
            return 0;
        }
        // 2、将num放置进set中用于快速判断
        Set<Integer> numSet = new HashSet<>(num.length);
        for (int i : num) {
            numSet.add(i);
        }

        int res = 1;
        for (int i : num) {
            // 从下、上判断当前的连续性
            // remove 是关键 能降低复杂度
            int down = i - 1;
            int up = i + 1;
            int acc = 1;
            while (numSet.contains(down)) {
                acc++;
                numSet.remove(down);
                down--;
            }
            while (numSet.contains(up)) {
                acc++;
                numSet.remove(up);
                up++;
            }
            res = Math.max(res, acc);
        }
        return res;
    }
}

 

标签:线性表,int,res,up,down,算法,num,numSet,序列
From: https://www.cnblogs.com/kukuxjx/p/17895657.html

相关文章

  • mbedTLS移植CTR_DRBG随机数算法
    一、概述因使用真随机数需要硬件支持,在硬件不支持时,我们需要通过软件来实现伪随机数生成器。根据NITSSP800-90A的推荐,推荐的随机数生成为HASH_DRBG、HMAC_DRBG、CTR_DRBG。本文主要介绍如何通过mbedtls移植实现CTR_DRBG生成随机数。二、mbedtls简要介绍MbedTLS是一个开源、......
  • 算法:如何实现大整数相加?
    算法题:给你两个很大很大的整数(如100位整数),如何求出它们的和?思路:小学数学竖式拆分,各个击破。在程序中列出的“竖式”究竟是什么样子呢?我们以426709752318+ 95481253129为例,来看看大整数相加的详细步骤:第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下......
  • [持续更新][数据结构][算法]涵盖线性表、栈、链表、队列、图、动态规划、分治递归、回
    备考考点整理内部排序表格树的主要考点二叉树的常考紧紧抓住\(n_0=n_2+1\)\(n=n_0+n_1+n_2...n_m\)\(n=n_1+2*n_2+3*n_3...m*n_m\)+1哈夫曼树没有度为1的结点,也就是\(n_1=0\)完全二叉树常考总结最大岛屿问题(dfs模板)#include<iostream>#include<algorith......
  • 【APP小程序】微信小程序包解密+加解密算法JS逆向
    简介现如今大部分微信小程序抓包看到的数据均是加密的,无法通过常规的业务抓包进行测试,现通过对微信小程序包进行解密,获取到微信小程序源码对加解密算法进行分析。微信小程序解密小程序包默认路径:C:\Users\Administrator\Documents\WeChatFiles\Applet如不知道哪个是需要测试......
  • 在自动化测试时,Python常用的几个加密算法,你有用到吗
    本文分享自华为云社区《『加密算法』|自动化测试时基于Python常用的几个加密算法实现,你有用到吗?》,作者:虫无涯。写在前边这几天做自动化测试,遇到一个问题,那就是接口的请求的密码是加密的;产品的要求是不能使用其他特殊手段,他给提供加密算法,需要在接口请求的时候,使用加密算法处......
  • 解读传奇补丁什么是Pak文件什么是WIL序列号
    Pak文件是GOM引擎自定义图片资源格式,支持密码功能,可以使用工具包中的WIL编辑器创建修改等编辑,很多脚本命令和功能都会使用这个WIL序号,M2-查看-列表信息二这里可以自定义添加,Pak文件读取规则详细查看登录器配置器Pak文件读取规则和Pak密码需要在登录器配置中配置。什么是Pak文件Pa......
  • 算法--哈希表
    哈希表利用空间换时间当我们要快速判断一个元素是否出现在集合里的时候,就需要考虑哈希表。哈希表一般会选择三种数据结构,分别是:数组、set(集合)、map(映射)。数组就是简单的哈希表,但是其大小不能无限开辟优先使用unordered_set(因为其查找和增删效率最优);若需要集合有序,则用set;若不......
  • 车辆检测计数算法
    车辆检测计数算法是一个经典的算法,可以使用目标跟踪+目标识别的方案来解决。但是经过几天的调研后,我发现了一种简单的解决方案。https://blog.csdn.net/taifyang/article/details/128264192 只需要前后两帧做一个最短路径匹配,然后利用直线与检测点是否相交,进行车辆计数。这......
  • Unity3D 游戏开发中的随机算法详解
    在Unity3D游戏开发中,随机算法是非常重要的一部分。随机算法可以用于生成随机数、随机位置、随机事件等,为游戏增加了一定的变化性和可玩性。本文将详细介绍Unity3D中常用的随机算法,并给出相应的技术详解和代码实现。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基......
  • php反序列化
    反序列化中常见的魔术方法1.  __wakeup()//执行unserialize()时,先会调用这个函数2.  __sleep()//执行serialize()时,先会调用这个函数3.  __destruct()//对象被销毁时触发4.  __call()//在对象上下文中调用不可访问的方法时触发5.  __callStatic()//在静......