( 哈希表) 128. 最长连续序列 ——【Leetcode每日一题】

news2024/11/26 22:26:01

❓128. 最长连续序列

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

请你设计并实现时间复杂度为 O ( n ) O(n) 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 < = n u m s . l e n g t h < = 1 0 5 0 <= nums.length <= 10^5 0<=nums.length<=105
  • − 1 0 9 < = n u m s [ i ] < = 1 0 9 -10^9 <= nums[i] <= 10^9 109<=nums[i]<=109

💡思路:哈希表

  1. nums中的所有数都放到哈希表中;
  2. 然后遍历哈希表;
    • 如果num - 1不存在,就从 num开始计算最长连续序列;
    • 如果存在则跳过,避免重复计算,且该结果也不是最大值。

🍁代码:(Java、C++)

Java

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
		for(int num : nums) {
			num_set.add(num);
		}
		int longest = 0;
		for(int num : num_set) {
			if(!num_set.contains(num - 1)) {
                int cur = num + 1;
				int n = 1;
				while (num_set.contains(cur)) {
                    cur++;
                    n++;
				}
				longest = Math.max(longest, n);
			}
		}
		return longest;
    }
}

C++

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> num_set;
        for(int num : nums){
            num_set.insert(num);
        }
        int longest = 0;
        for(int num : num_set){
            if(!num_set.count(num - 1)){
                int cur = num + 1;
                int n = 1;
                while(num_set.count(cur)){
                    cur++;
                    n++;
                }
                longest = max(longest, n);
            }
        }
        return longest;
    }
};

🚀 运行结果:

在这里插入图片描述

🕔 复杂度分析:

  • 时间复杂度 O ( n ) O(n) O(n),其中 n 为数组的长度。
  • 空间复杂度 O ( n ) O(n) O(n),哈希表存储数组中所有的数需要 O ( n ) O(n) O(n) 的空间。

题目来源:力扣。

放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!

注: 如有不足,欢迎指正!

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

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

相关文章

ai数字人无限播是什么?数字人直播带货如何搭建?操作教程及注意事项分享

随着数字技术的不断进步&#xff0c;直播行业也在不断的发展壮大。其中&#xff0c;数字人直播成为了最为热门的直播方式之一。数字人直播利用AI技术创建出的虚拟数字人进行直播&#xff0c;给观众带来了全新的视觉体验。而随着数字人直播的不断发展&#xff0c;数字人直播带货…

力扣(LeetCode)1172. 餐盘栈(C++)

优先队列 解题思路&#xff1a;根据题意模拟。用数组存储无限数量的栈。重在实现 p u s h push push 和 p o p pop pop 操作。 对于 p u s h push push 操作&#xff0c;需要知道当前从左往右第一个空栈的下标。分两类讨论&#xff1a; ①所有栈都是满的&#xff0c;那么我…

基于台风信息查询 API 设计台风预警系统的基本思路

引言 在过去的几十年中&#xff0c;由于全球气候变化等因素的影响&#xff0c;台风的强度和频率都有所增加&#xff0c;给人类社会带来了极大的威胁。在这种背景下&#xff0c;一个高效可靠的台风预警和监测系统显得尤为重要。这种系统可以通过获取、存储、处理和分析各种相关…

产业数字化爆发,松山湖开发者村打通数实融合“最后一公里”

2023年正值第四次工业革命新十年开始之际&#xff0c;也是我国数字经济量质齐升新十年的开幕。2022年&#xff0c;中国全部工业增加值突破40万亿元大关&#xff0c;占GDP比重达33.2%&#xff0c;制造业规模连续13年位居世界首位。当以工业和制造业为代表的实体产业&#xff0c;…

过来人转本考试后的感悟和经验,真的很受用

过来人转本考试后的感悟和经验&#xff0c;真的很受用&#xff01;转本不仅是分数的较量&#xff0c;也是信息收集、时间管理、学习能力、毅力等等的较量。同学们在转本中难免会遇见一些困难&#xff0c;为了避免走弯路&#xff0c;一起来看看过来人的感悟和经验吧&#xff01;…

“我和AI抠图网站的秘密情缘“

在浏览器里面意外发现了一个AI抠图工&#xff0c;了解了一下&#xff0c;AI抠图基于深度学习框架&#xff0c;结合智能检测识别技术&#xff0c;目前已能够实现高精视&#xff0c;秒级全自动主体、场景像素级识别等的分割能力。 一款好的抠图工具&#xff0c;可以把照片变得更加…

结构型模式-装饰者模式

装饰者模式 概述 我们先来看一个快餐店的例子。 快餐店有炒面、炒饭这些快餐&#xff0c;可以额外附加鸡蛋、火腿、培根这些配菜&#xff0c;当然加配菜需要额外加钱&#xff0c;每个配菜的价钱通常不太一样&#xff0c;那么计算总价就会显得比较麻烦。 使用继承的方式存在…

98-Linux_HTTP协议与web服务器

HTTP协议与web服务器 1.浏览器与服务器通信过程(1)浏览器与服务器通信过程(2)什么是长连接,什么是短连接? 2.常见的web服务器有:3.http请求方法和应答状态码(1)HTTP的请求报头结构(2)Http请求报头实例(3)http的请求方法 4.HTTP应答报头和应答状态(1)HTTP的应答报头结构(2)HTTP…

Spring动态添加数据源(全自动)

一、使用场景 1、现在网上所有写的动态数据源&#xff0c;都是假动态数据&#xff0c;都是预先知道要连接几个数据库&#xff0c;但这不满足具体真正需要动态添加连接数据库的需求&#xff1b; 2、在很多业务场景下&#xff0c;如项目默认连一个主数据库&#xff0c;服务启动…

必知的Facebook广告兴趣定位技巧,更准确地找到目标受众

在Facebook广告投放中&#xff0c;兴趣定位是非常重要的一环。兴趣定位不仅可以帮助我们找到我们想要的目标受众&#xff0c;还可以帮助我们避免一些常见的坑。今天&#xff0c;就让我们一起来看看必知的Facebook广告兴趣定位技巧&#xff0c;更准确地找到目标受众。 1.不要只关…

北京/西安/杭州/深圳CDGA/CDGP数据治理认证班于2023年5月7日开班

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

蓝牙基础介绍

目录 一、概述&#xff08;Overview&#xff09; 二、框架结构&#xff08;Frame Structure&#xff09; 三、蓝牙协议&#xff08;Bluetooth Protocol&#xff09; 一、概述&#xff08;Overview&#xff09; 什么是蓝牙&#xff1f;就像你们大多数人想知道任何你从未听说过…

Redis-01-基础-redis简介安装、数据类型、常用命令、使用Spring Data Redis封装好的命令方法操作redis

文章目录 Redis基础课程内容1. 前言1.1 什么是Redis1.2 使用Redis能做什么 2. Redis入门2.1 Redis简介2.2 Redis下载与安装2.2.1 Redis下载2.2.2 Redis安装 2.3 Redis服务启动与停止2.4 Redis配置文件 3. Redis数据类型3.1 介绍3.2 Redis 5种常用数据类型 4. Redis常用命令4.1 …

Unity TextMeshPro文本存在背景框的问题研究

在使用TextMeshPro的时候遇到了字体黑底的问题&#xff0c;类似下图这样 当字体较大的时候表现正常&#xff0c;当缩小到一定程度就会出现黑底。这个情况让人第一时间就是怀疑SDF计算缩放的时候存在问题。在我们重新导出字体&#xff0c;调整图集字体大小以及Padding后&#xf…

基于GA遗传算法的列车交路优化MATLAB代码

资源地址&#xff1a; 基于GA遗传优化算法的列车交路方案优化matlab代码资源-CSDN文库 问题描述&#xff1a; 列车交路是指列车在规定的运行线路上往返运行的方式&#xff0c;规定了列车运行区段、折返车站以及按不同交路运行的列车对数. 对于既有线路&#xff0c;正在进行机…

【2023年五一数学建模竞赛B题】快递需求分析问题--完整思路和代码

1.问题背景与描述 赛题分析&#xff1a;这道题出的比较好&#xff0c;考察面较多&#xff0c;难度循环渐进&#xff0c;相对C题是比较有层次的一道题 2.解题思路分析 2.1 问题一的分析 请从收货量、发货量、快递数量增长/减少趋势、相关性等多角度考虑&#xff0c;建立数学模…

d3.js学习笔记②搭建服务器(含报错解决)

强烈建议自己搭建一个服务器&#xff0c;否则在后续往js里导入本地数据&#xff08;比如csv、json文件等&#xff09;的时候会报错。我用的是Apache服务器&#xff0c;下载、安装过程参考这篇文章&#xff1a;Apache安装配置 在浏览器输入http://localhost/或者http://127.0.0…

2023轻薄投影仪选哪款?极米Z6X Pro成年轻人租房首选投影

生活在哪里&#xff1f;大隐隐于市&#xff0c;小隐隐于出租屋。在那小小出租屋里&#xff0c;租房人开始选择自己打造一个“家”。一般情况下&#xff0c;在外租房的房间整体面积比较小&#xff0c;选择轻薄的投影仪是一个很好的选择。而国内知名投影品牌极米科技推出的这款轻…

WebLogic LinkRef 反序列化远程代码执行漏洞(CVE-2023-21931)

漏洞描述 Oracle WebLogic Server 是一款Java EE应用服务器。 受影响版本的WebLogic中WLNamingManager#getObjectInstance()存在JNDI查找逻辑&#xff0c;导致攻击者可以通过IIOP协议传入特定的对象触发反序列化逻辑&#xff0c;执行任意代码。 当传入boundObject 对象是 Li…

MySQL的数据库引擎介绍

1、什么是数据库引擎 数据库引擎就是操作数据库的一段程序或程序段&#xff0c;用于存储、处理和保护数据的核心服务。 利用数据库引擎可控制访问权限并快速处理事务&#xff0c;从而满足企业内大多数需要处理大量数据的应用程序的要求。数据库应用项目是通过数据库引擎与数据库…