LeetCode算法题:128. 最长连续序列

给定一个未排序的整数数组 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

提示:

  • 0 <= nums.length <= 10^5
  • -10^9 <= nums[i] <= 10^9

我的题解思路:

定义一个长度len为(数组最大值-数组最小值+1)的布尔型数组,
值都为false。遍历原始整数数组[100,4,200,1,3,2],
例如当前遍历的数为100,则将布尔数组下标
为(len-(max-100)-1)的值改为true。
遍历完原始数组,将对应的布尔数组值改成true。
最后遍历布尔数组,找到最长的连续子序列。
class Solution {
    public int longestConsecutive(int[] nums) {
        if(nums.length==0)return 0;
        int maxValue = 0;
        int minValue = 0;
        int numsLen = nums.length;// 原始数组的长度
        for(int i=0;i<numsLen;i++){//获取到数组中的最大值和最小值
            if(nums[i]>maxValue)maxValue = nums[i];
            if(nums[i]<minValue)minValue = nums[i];
        }
        int flagsLen = maxValue-minValue+1;// 布尔数组的长度
        boolean[] flags = new boolean[flagsLen];
        for(int i=0;i<numsLen;i++){// 修改布尔数组的值
            flags[flagsLen-(maxValue-nums[i])-1]=true;
        }
        int maxLen = 0;//记录最长的连续序列长度
        int curLen = 0;//记录当前连续序列长度
        for(int i=0;i<flagsLen;i++){
            if(flags[i]){//flag值为true表示序列连续,长度+1
                curLen++;
                if(curLen>maxLen)maxLen=curLen;//当前长度大于之前记录的最长序列长度,更新最长序列长度
            }else{// flag为false表示序列不连续,长度归0,重新记录
                curLen=0;
            }
        }
        return maxLen;
    }
}

报错:
在这里插入图片描述
官方题解:
在这里插入图片描述
结合官方题解写出代码:

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for(int i=0;i<nums.length;i++){// 数组转为list,set
            set.add(nums[i]);
        }
        int maxLen = 0;
        int curLen = 0;
        for(Integer a:set){// 遍历集合
            curLen = 0;//当前长度为0
            if(set.contains(a-1))continue;//如何该值的前一个数存在,则跳过,进行下一个值的判断。
            for(int i=a;set.contains(i);i++){// 计算连续序列长度。contains的时间复杂度为O(1)
                curLen++;
            }
            if(curLen>maxLen)maxLen=curLen;
        }
        return maxLen;
    }
}

总结:
hash表查看一个值是否存在的时间复杂度为O(1),因此以后需要使用查询效率高的数据结构除了使用数组下标之外,使用hash表和hashset也可以。
避免重复查询,如果存在比这个值小的值,则把查询任务交给值更小的数,该数直接跳过即可。
数组转hashset的方法。循环一个一个加入到set中

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3、用Vue快雕塑搭建一个管理系统的页面布局框架

3.2.顶部栏header 在el-header标签里对标签栏header进行样式定义 <template><div id"app"><el-container><el-header style"background-color: #4c535a"><img src"/assets/logo.png" alt"" style"w…

卷积网络项目:实现识别鲜花四分类对比LeNet5、VGG16、ResNet18、ResNet34分类网络

卷积四分类项目 Gitee传送门 分类目标选取 鲜花 杏花 apricot_blossom桃花 peach_blossom梨花 pear_blossom梅花 plum_blossom 模型选择 卷积 LeNet5VGG16ResNet18ResNet34 以图搜图 获取相似度前10的搜图结果 数据清洗 鲜花四分类 删除非图片文件 删除重复图片 整理…

FlyFlow:支持驳回后自动跨节点跳回

本周更新 新增&#xff1a;审批节点驳回&#xff08;拒绝配置的驳回&#xff09;支持自动跳回当前节点新增&#xff1a;修改数据节点新增&#xff1a;删除数据节点新增&#xff1a;子流程支持配置自动跳过发起人节点优化&#xff1a;两个项目合并一个单体项目优化&#xff1a;…

Springboot3 链接Redis遇到的报错(本文仅记录保存,优质文章移步springboot专栏)

出现的报错&#xff1a; cannot connect to Redisedis.clients.jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is setredis wrong number of arguments for ‘auth’ command 其实上面的三个报错是不同界面显示的&#xff0c;后面两个是通过Ide…

BA112网关实现BACnet楼宇系统与OPC UA平台高效协同钡铼技术

在现代智能建筑领域&#xff0c;楼宇自动化控制系统&#xff08;BAS&#xff09;的高效运作是实现节能减排、提升居住与工作环境舒适度、增强设施管理效率的关键。BACnet协议作为楼宇自动化领域的国际标准&#xff0c;广泛应用于暖通空调、照明控制、安防系统等多个方面。然而&…

信创FTP替代的方案中,哪一个才是最适合航空行业的?

2018年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;我国科技尤其是上游核心技术受制于人的现状对我 国经济发展提出了严峻考验。在全球产业从工业经济向数字经济升级的关键时期&#xff0c;中国明确 “数字中国”建设战略&#xff0c; 抢占数字经济产业链制高点。 在…

Spring AOP(概念,使用)

目录 Spring AOPAOP是什么什么是Spring AOPAOP实际开发流程1. 引入依赖2. 编写AOP程序 Spring AOP详解Spring AOP中的核心概念Spring AOP的通知类型六种类型PointCutOrder(切面优先级) Spring AOP AOP是什么 Aspect Oriented Programminig(面向切面编程)切面指的是某一类特定…

信息管理系统升级改造项目:需求分析工具与实践

关键词&#xff1a;出入境信息管理系统、升级改造项目、需求分析实践、逆向工程、PowerDesigner、Axure Pro、信息系统优化策略 文章重点&#xff1a;本文以出入境信息管理系统的升级改造项目为背景&#xff0c;详细阐述了信息系统需求分析的实践过程&#xff0c;特别是如何通过…

海外媒体宣发:新加坡.马来西亚如何在海外媒体投放新闻通稿-大舍传媒

导言 随着全球化的进程加速&#xff0c;海外市场对于企业的发展越来越重要。而在海外媒体上宣传企业的新闻通稿&#xff0c;成为了拓展海外市场和提升企业知名度的重要手段之一。本文将介绍大舍传媒对于如何在海外媒体上投放新闻通稿的经验和策略。 准备工作&#xff1a;了解…

学习注意力机制并将其应用到网络中

什么是注意力机制 注意力机制的核心重点就是让网络关注到它更需要关注的地方。 当我们使用卷积神经网络去处理图片的时候&#xff0c;我们会更希望卷积神经网络去注意应该注意的地方&#xff0c;而不是什么都关注&#xff0c;我们不可能手动去调节需要注意的地方&#xff0c;…

OpenAI 推出 GPT-4o:实现多模态 AI 交互

一、前言 OpenAI 推出了其最新的 AI 模型——GPT-4o&#xff0c;此次发布的并非 GPT-4.5 或 GPT-5&#xff0c;而是一款全新的“全模态模型(Omnimodel)”。这是一个将文本、语音和视觉能力集成到单一无缝 AI 体验中的突破性发展。 GPT-4o 于 2024 年 5 月 14 日发布&#xff0…

北京玻色量子携手赛氪网举办长三角高校数学建模竞赛巡回讲座

2024年5月13日下午&#xff0c;一场聚焦数学建模与量子计算前沿的讲座在中国计量大学隆重举行。此次讲座作为第四届长三角高校数学建模竞赛的巡回宣讲活动之一&#xff0c;由北京玻色量子科技有限公司与竞赛组委会成员赛氪网共同举办&#xff0c;旨在向广大师生介绍量子计算的应…

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套 部分题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&#xff09;&#xff08;共十套&#xff0c;每套四十题选择题&#xff09;获取&#xff08;WX:…

渣土车上路识别报警摄像机

随着城市建设的不断推进&#xff0c;渣土车在城市道路上的数量也逐渐增加。然而&#xff0c;一些不法渣土车司机往往会超载、超速行驶或者闯红灯&#xff0c;给道路交通安全和城市环境带来了一定的隐患。为了有效监管渣土车上路行驶的情况&#xff0c;渣土车上路识别报警摄像机…

如何从集装箱的标准化启发软件的模块化设计?

目录 一、集装箱的历史发展 1、早期设想与萌芽 2、英国铁路初步应用 3、美欧多国发展 4、国际组织推动 5、海运集装箱兴起 6、标准化进程加速 7、联运格局形成 8、后续发展与影响 二、集装箱的标准化意义 三、集装箱的标准化与软件设计的模块化 1、集装箱标准化 2…

数字化校园与院校通的关系

数字化校园是以数字化信息和网络为根底&#xff0c;在计算机和网络技术上建立起来的对教育、科研、办理、技术服务、生活服务等校园信息的搜集、处理、整合、存储、传输和运用&#xff0c;使数字资源得到充沛优化运用的一种虚拟教育环境。经过完成从环境&#xff08;包含设备&a…

USB3.0接口——(2)数据结构

1.数据结构 在 USB 3.0 及更高版本的 xHCI 协议中&#xff0c;“Rings”、“Transfer Request Block (TRB)” 和 “Transfer Descriptor (TD)” 是用于管理 USB 数据传输和事件的重要概念。 1.1.Rings Rings是指一种数据结构&#xff0c;用于组织和管理 USB 数据传输和事件。…

pdfMake,xlsx-js-style,elementTable表格导出大量数据的pdf和xslx表格

使用渲染dom传递给xlsx或将dom转canvas在传给jspdf数据量大都会造成页面负载过大 所以导pdf和xlsx都使用数据传递给pdfMake,xlsx-js-style&#xff0c;pdf涉及分页与合并单元格 一.pdf npm并引入pdfMake和其字体包&#xff08;记录时使用版本0.2.10 import pdfMake from &qu…

【系统架构师】-案例篇(十二)MQTT、边缘计算与缓存一致性

1、MQTT是一个基于物联网的传输协议&#xff0c;用于轻量级的订阅发布的消息传输。旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。 开放消息协议&#xff0c;简单易实现发布订阅模式&#xff0c;一对多消息发布基于TCP/IP网络连接,提供有序&#xff0c;无损…

【Vue开发】基于SSM++jsp的精品酒销售管理系统【源码+lw+部署文档+讲解】

目录 第一章 绪 论 第二章 关键技术的研究 2.1 JSP技术介绍 2.2 JAVA简介 2.3 ECLIPSE 开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第三章 系统分析 3.1 系统设计目标 3.2 系统可行性分析 3.3 系统功能分析和描述 3.4系统UML用例分析 3.4.1管理员用例 3.4.2用户用例 3.5系统流…