【力扣 Hot100 | 第六天】4.21(最长连续序列)

news2024/12/29 0:17:07

在这里插入图片描述

文章目录

  • 10.最长连续序列
    • 10.1题目
    • 10.2解法:哈希法
      • 10.2.1哈希思路
      • 10.2.2代码实现

10.最长连续序列

10.1题目

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

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

  • 示例一:
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
  • 示例二:
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

10.2解法:哈希法

10.2.1哈希思路

  • 题目要求时间复杂度为O(n)
  • 核心:一次遍历,每个数都判断一次这个数是不是连续序列的开头那个数
    • 用哈希表查找这个数前面一个数是否存在,即num-1在序列中是否存在。存在那这个数肯定不是开头,直接跳过
    • 因此只需要对每个开头的数进行循环,直到这个序列不再连续,因此复杂度是O(n)。
  • 举例:[100,4,200,1,3,4,2] 去重后的哈希序列为:
    [100,4,200,1,3,2]
    按照上面逻辑进行判断:
    • 元素100是开头,因为没有99,且以100开头的序列长度为1
    • 元素4不是开头,因为有3存在,过,
    • 元素200是开头,因为没有199,且以200开头的序列长度为1
    • 元素1是开头,因为没有0,且以1开头的序列长度为4,因为依次累加,2,3,4都存在。
    • 元素3不是开头,因为2存在,过,
    • 元素2不是开头,因为1存在,过。

10.2.2代码实现

	public int longestConsecutive(int[] nums) {

        if(nums.length==0){
            return 0;
        }
        
        int res=Integer.MIN_VALUE;
        Set<Integer> set=new HashSet<>();
        for(int num:nums){
            set.add(num);
        }
        //1、遍历整个nums数组
        for(int num:nums){
            //2、判断 num 是否为有序序列的第一个元素
            if(set.contains(num-1)==false){

                //3、num为第一个元素

                int max=1;
                while(set.contains(num+1)){
                    num++;
                    max++;
                }
    
                //4、更新最长连续序列长度
                res=Math.max(res,max);
            }
        }
        return res;
         
    }

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1613711.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用CipherTrust透明加密勒索软件保护阻止勒索软件的传播

Thales实验室对十起勒索攻击的软件进行测试&#xff0c;效果理想。另外对于这些常见的勒索攻击方式也进行了大量模拟&#xff0c;都很好的进行了保护。 BleepingComputer.com上的文章涵盖了过去几个月(2024年1月至3月)最近的勒索软件攻击。本博客将展示&#xff0c;如果在这些受…

强固型工业电脑在码头智能闸口、OCR(箱号识别)、集装箱卡车车载电脑行业应用

集装箱卡车车载电脑应用 背景介绍 针对码头集装箱卡车的调度运用, 结合码头TOS系统设计出了各种平台的车载电脑(VT系列)和车载LED显示屏(VLD系列)&#xff0c;同时提供各种安装支架&#xff0c;把车载电脑固定到狭小的驾驶室中&#xff1b;同时提供了各种天线选择&#xff08;…

IEEE PDF eXpress Validating Pdf..之后Error in converting file

在将自己写好的pdf论文转化为IEEE出版的pdf论文格式的时候&#xff0c;错误如下图&#xff1a; 解决办法如下&#xff1a;失败之后&#xff0c;那里有一个选项按钮&#xff0c;叫做manual request&#xff0c;也就是人工转换&#xff0c;点那个申请就可以了&#xff0c;然后也挺…

PostCSS概述与指南:轻松应对浏览器兼容性与CSS优化!

PostCSS是一个用于处理CSS的工具&#xff0c;它可以让开发者使用最新的CSS特性&#xff0c;而不需要担心浏览器兼容性问题。PostCSS通过将CSS解析成抽象语法树&#xff08;AST&#xff09;&#xff0c;然后对AST进行操作&#xff0c;最后再生成新的CSS。这样&#xff0c;开发者…

Redis详解和Spring Data Redis应用

注意事项 如何快速进入命令行窗口什么是配置类 Redis简介 Redis是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。它通常被称为数据结构服务器&#xff0c;因为值&#xff08;value&#xff09…

遇到you-get下载报错问题解决

pip3 install you-get安装这里就不赘述了&#xff0c;如果你还不会安装&#xff0c;说明这篇文章不适合你&#xff0c;这篇文章主要解决当执行you-get的报错&#xff1a; 当然你可以加选项–debug具体看一下到底报什么错。 第一步 替换文件 首先&#xff0c;我们下载仓库最新…

基于函数计算FC3.0 部署AI数字绘画stable-diffusion自定义模型

基于函数计算FC3.0 部署AI数字绘画stable-diffusion自定义模型 部署AI数字绘画stable-diffusion曲线救国授权github账号 部署ffmpeg-app-v3总结 在讲述了函数计算FC3.0和函数计算FC2.0的操作界面UI改版以及在函数管理、函数执行引擎、自定义域名、函数授权及弹性伸缩规则方面进…

java中的异常机制

异常原理分析 在我们编写一个代码的时候必然会出现这样那样的问题&#xff0c;这些问题可能是明显的&#xff0c;也有可能是不明显的。从理论上来说&#xff0c;一个程序员应当具备处理代码出现的大多数问题的能力&#xff0c;但是这并不意味着程序员要思考处理所有的代码问题。…

从零开始的vscode配置及安装rust教程

配置vscode的rust环境 下载安装vscodemac 环境1. 下载安装rust2. 配置 mac vscode环境3. 创建一个测试项目 windows 环境1. 安装c运行环境2. 安装配置rustup3. 配置windows vscode环境4. 创建一个测试项目 下载安装vscode 1.官网应用程序下载 vscode&#xff1a;https://code.v…

Mogdb 5.0新特性:SQL PATCH绑定执行计划

前言 熟悉Oracle的dba都知道&#xff0c;生产系统出现性能问题时&#xff0c;往往是SQL走错了执行计划&#xff0c;紧急情况下&#xff0c;无法及时修改应用代码&#xff0c;dba可以采用多种方式针对于某类SQL进行执行计划绑定&#xff0c;比如SQL Profile、SPM、SQL Plan Base…

Git多人协作开发

1、创建分支&#xff08;在码云上&#xff09; &#xff08;1&#xff09;在本地查看我们本地指向远程的分支&#xff1a;git branch -r &#xff08;2&#xff09;我们在码云上新建了个dev分支&#xff0c;我们将dev分支拉取到本地&#xff1a;git pull &#xff08;3&#…

2.1K Star微软开源的高质量 iot库

功能描述 该项目是一个开源的 .NET Core 实现&#xff0c;旨在帮助开发者构建适用于物联网(IoT)设备和场景的应用程序。它提供了与传感器、显示器和输入设备等相互作用所需的 GPIO 引脚、串口等硬件的接口。该仓库包含 System.Device.Gpio 库以及针对各种板卡&#xff08;如 Ra…

学习51单片机 C语言知识

一、数据类型 C 语言包含的数据类型如下图所示 C51 的数据类型分为基本数据类型和组合数据类型&#xff0c;情况与标准 C 中的数据类型基本相同&#xff0c;但其中 char 型与 short 型相同&#xff0c;float 型与 double 型相同&#xff0c;另外&#xff0c;C51 中还有专门针…

大多企业搞错了!TRIZ的培训不是目的,应用才是

近年来&#xff0c;企业对于员工的培训投入越来越大&#xff0c;尤其是在引入TRIZ等先进方法论方面。然而&#xff0c;许多企业在实施过程中却陷入了一个误区&#xff1a;将培训本身视为目的&#xff0c;而非将其应用于实际工作和问题解决中。天行健六西格玛培训公司解析如下&a…

【未完成】【QT+OpenCV】车牌号检测 学习记录 遇到的问题

【QTOpenCV】车牌号检测 学习记录 首先在QT里面配置好OpenCV .pro文件中加入&#xff1a; INCLUDEPATH G:/opencv/build/include LIBS -L"G:/opencv/build/x64/vc14/lib"\-lopencv_core \-lopencv_imgproc \-lopencv_highgui \-lopencv_ml \-lopencv_video \-lo.c…

Python 全栈安全(三)

原文&#xff1a;annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十一章&#xff1a;OAuth 2 本章内容 注册 OAuth 客户端 请求对受保护资源的授权 授权而不暴露身份验证凭据 访问受保护的资源 OAuth …

Python 全栈安全(四)

原文&#xff1a;annas-archive.org/md5/712ab41a4ed6036d0e8214d788514d6b 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第十五章&#xff1a;内容安全策略 本章涵盖 使用 fetch、navigation 和 document 指令编写内容安全策略 使用 django-csp 部署 CSP 使用报…

【C++】学习笔记——类和对象_3

文章目录 二、类和对象11. 析构函数&#xff08;补&#xff09;12. 拷贝构造函数13. 运算符重载 未完待续 二、类和对象 11. 析构函数&#xff08;补&#xff09; 析构函数并不是销毁对象&#xff0c;对象的销毁是由编译器完成的&#xff0c;析构函数的作用是清理&#xff0c…

java-Spring-bean的生命周期

定义 程序中的每个对象都有生命周期&#xff0c;对象的创建、初始化、应用、销毁的整个过程称之为对象的生命周期&#xff1b; 在对象创建以后需要初始化&#xff0c;应用完成以后需要销毁时执行的一些方法&#xff0c;可以称之为是生命周期方法&#xff1b; 在spring中&…

<计算机网络自顶向下> 可靠数据传输的原理

可靠数据传输&#xff08;rdt&#xff1a;Reliable Data Transfer&#xff09;的原理 rdt在应用层&#xff0c;传输层和数据链路层都很重要是网络TOP10问题之一信道的不可靠特点决定了可靠数据传输rdt的复杂性rdt_send: 被上层&#xff08;如应用层&#xff09;调用&#xff0…