最长连续序列【中等】

leetcode链接
给定一个未排序的整数数组 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
thought: 这题可先排序,然后采用双指针法。其中,两个相同的值跳过来实现正确的计数。【应当采用linkedHashSet特点来去重,更好使用,就不用对重复的进行跳过】

‘’’ java

class Solution {public int longestConsecutive(int[] nums) {Arrays.sort(nums);if (nums.length <=0) return 0;int len = 1,max = 1;for (int i = 0,j=i+1;j<nums.length;){if (nums[i]+1 == nums[j]){len++;}else if (nums[i] == nums[j]){i++;j++;continue;}else {len = 1;}i++;j++;max = max<len?len:max;}return max;}
}

上述方法,由于Array.sort的时间复杂度是nlogn。因此看了其他方法,采用set去重,然后利用连续的特性去获取长度。如下:

class Solution {public int longestConsecutive(int[] nums) {int res = 0;    // 记录最长连续序列的长度Set<Integer> numSet = new HashSet<>();  // 记录所有的数值for(int num: nums){numSet.add(num);    // 将数组中的值加入哈希表中}int seqLen;     // 连续序列的长度for(int num: numSet){// 如果当前的数是一个连续序列的起点,统计这个连续序列的长度if(!numSet.contains(num - 1)){seqLen = 1;while(numSet.contains(++num))seqLen++;  // 不断查找连续序列,直到num的下一个数不存在于数组中res = Math.max(res, seqLen);    // 更新最长连续序列长度}}return res;}
}作者:画图小匠
链接:https://leetcode.cn/problems/longest-consecutive-sequence/solutions/2362995/javapython3cha-xi-biao-ding-wei-mei-ge-l-xk4c/
来源:力扣(LeetCode)

‘’’ python
使用set,然后利用连续特性去计算长度。

class Solution:def longestConsecutive(self, nums: List[int]) -> int:num_set = set(nums)res = 0for num in num_set:if (num-1) not in num_set:seq_len = 1while (num+1) in num_set:seq_len += 1num += 1res = max(res,seq_len)return res

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

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

相关文章

『new Date 在 IOS 失效 の bug』

问题&#xff1a;new Date()在安卓下正常&#xff0c;在IOS下显示不出来。 原因&#xff1a;在IOS下&#xff0c;new Date(“2000-2-22 00:10”),返回的是undefined&#xff0c;因为IOS不支持这种类型格式。 解决&#xff1a;更换下格式&#xff1a;new Date(“2000/2/22”) …

类初始化,类加载,类加载器

类初始化&#xff0c;类加载&#xff0c;类加载器 1. 类加载1.1. 类的加载1.2. 类的链接1.2.1. 验证1.2.2. 准备1.2.3. 解析 2. 类加载器2.1. 类加载器分为四种&#xff1a;前三种为虚拟机自带的加载器。2.2. 类加载有三种方式&#xff1a;2.3. **JVM类加载机制**2.4. 双亲委派…

GeoTrust通配符证书:保护您的网站安全

GeoTrust通配符 SSL证书是一种特殊的 SSL 证书类型&#xff0c;它可以同时为您的主域名及其所有子域提供安全保护。无论您有多少个不同的子域需要保障&#xff0c;都可以通过单一的 GeoTrust 通配符 SSL 证书轻松实现&#xff0c;极大地简化了管理流程并降低了成本。 此外&…

1688商品详情数据接口(1688.item_get)

1688商品详情数据接口是一种程序化的接口&#xff0c;通过这个接口&#xff0c;商家或开发者可以使用自己的编程技能&#xff0c;对1688平台上的商品信息进行查询、获取和更新。这个接口允许商家根据自身的需求&#xff0c;获取商品的详细信息&#xff0c;例如价格、库存、描述…

JUC(Java Util Concurrent)多线程并发库

JUC&#xff08;Java Util Concurrent&#xff09;是Java中用于编写多线程并发程序的库。开发过程中使用JUC主要有以下几个好处&#xff1a; 1. 提高程序性能&#xff1a;使用JUC可以实现多线程并发执行&#xff0c;充分利用多核CPU&#xff0c;提高程序的性能。 2. 简化代码…

群晖NAS搭建WebDav服务做文件共享,可随时随地远程访问

文章目录 1. 在群晖套件中心安装WebDav Server套件1.1 安装完成后&#xff0c;启动webdav服务&#xff0c;并勾选HTTP复选框 2. 局域网测试WebDav服务2.1 下载RaiDrive客户端2.2 打开RaiDrive&#xff0c;设置界面语言可以选择中文2.3 点击添加按钮&#xff0c;新建虚拟驱动区2…

从事软件测试8年,对业务测试人员的一些思考

自从事测试工作八年多以来&#xff0c;经历过三个部门多条业务线&#xff0c;也经历过测试转型再回到测试&#xff0c;在此过程中对测试工作和角色的认知也逐步有些思考&#xff0c;想把这些思考分享给大家&#xff0c;希望为业务测试同学提供一些有价值的思路。 同时&#xff…

YOLOV7主干改进,使用fasternet轻量化改进主干(完整教程)

1&#xff0c;Pconv&#xff08;来自Fasternet&#xff09;&#xff08;可作为模型中的基础卷积模块使用&#xff09; 论文链接&#xff1a;https://arxiv.org/abs/2303.03667 2&#xff0c;为了大家方便的使用&#xff0c;这里我对原本的PConv的代码做了部分的改动&#xff0…

立哥尖端技术-云安全整合方案

云安全管理中心 安全管理中心具有集中管控云环境整体安全态势的功能&#xff0c;具备以下功能&#xff1a; &#xff08;1&#xff09;部署方式&#xff1a;与云平台紧耦合&#xff0c;可实现云平台一键下单&#xff0c;自动交付。 &#xff08;2&#xff09;安全态势总览&a…

拿下挣值管理,软考集成你就成功了一半!

在备考软考集成的时候&#xff0c;挣值管理有多重要呢&#xff1f;挣值管理的计算题考的频率非常高&#xff0c;基本上每年都会考。 而且&#xff0c;计算题基本上都是20分左右&#xff0c;只要能在这道计算题上得满分&#xff0c;那么45分及格的考试就已经成功了一半。 今天…

豪华程度堪比飞机头等舱?奔驰在北美发布Tourrider系列巴士

今年三月&#xff0c;奔驰工厂附近出现了一台特殊的测试车。其突出的前保险杠以及竖置双风挡等特殊配置&#xff0c;都在暗示着它并非是为欧洲市场打造。 根据特征推测&#xff0c;这台车应该是为北美市场打造。 就在昨天&#xff0c;奔驰发布了旗下全新Tourrider系列豪华客车&…

python数据分析高效代码合集

文章目录 问题:我有5个dataframe,都包含time 列,如何将它们根据time列取交集,并保存到同一个excel的不同sheet页中。**df1,df2, df3, df4, df5,其也要用取交集后的time列**问题:我有5个dataframe,都包含time 列,如何将它们根据time列取交集,并保存到同一个excel的不同…

npm安装 node-sass

第一步&#xff1a;安装node-gyp 1.: npm install node-gyp -g2.: node-gyp install3.: npm install node-sass

QML24、常规组件StackView

1.简介与示例 StackView管理着view页面的生命周期,提供了页面的栈式导航。这些view页面可能有业务需要,根据业务需要,可以一级一级向深处跳转,根据当前view的状态与设定的情况,可能产生一个新view或者返回之前view 比如:注册账号分步骤,输入用户名,密码,点击下…

嵌入式单片机方向和Linux驱动开发方向哪个发展前景好?

嵌入式单片机方向和Linux驱动开发方向哪个发展前景好&#xff1f; 在某些平台上看到很多人鼓吹嵌入式Linux开发比单片机开发要好&#xff0c;让所有人都去做嵌入式Linux开发。说这种话的人大多数是嵌入式Linux的培训机构&#xff0c;或者是一开始就以嵌入式Linux入门的那一批人…

小型养猪场污水处理技术方案

诸城市鑫淼环保小编带大家了解一下小型养猪场污水处理技术方案 1.初步处理&#xff1a; 猪舍设立固液分离装置&#xff1a;这可以帮助将固体粪便与液体污水分开&#xff0c;减少进一步处理的难度和成本。 设置沉淀池&#xff1a;让分离后的污水在沉淀池内停留&#xff0c;使部分…

Windows更换主板后一直提示,你的pin码不可再用解决办法

最近惠普电脑主板坏了&#xff0c;到售后去维修电脑更换了个主板。 在经过了一系列的重新开机后&#xff0c;就直接卡在了“你的pin码不可再用”那里。 主要症状就是&#xff0c;一直点一直连不上windows的 microsoft账户&#xff0c;点完一会儿黑屏。然后就回到了一开头的“你…

飞书如何接入ChatGPT-打造个人智能问答助手实现无障碍交流

目录 前言 环境列表 1.飞书设置 2.克隆feishu-chatgpt项目 3.配置config.yaml文件 4.运行feishu-chatgpt项目 5.安装cpolar内网穿透 6.固定公网地址 7.机器人权限配置 8.创建版本 9.创建测试企业 10. 机器人测试 总结 前言 在飞书中创建chatGPT机器人并且对话&am…

python连接数据库的方式

python连接数据库的方式 pyzenith.connect&#xff08;&#xff09;函数就是连接数据库&#xff1b; exception.ScriptException&#xff08;&#xff09;这一句是自定义异常&#xff0c;可以不用我这个&#xff1b; finally里面还有一个try finally是有必要的&#xff0c;防止…

抖音汽车租赁小程序技术指南:开发高效便捷的租赁系统

为了更好地满足用户需求&#xff0c;抖音汽车租赁小程序成为一个备受关注的技术解决方案。本文将深入探讨开发高效便捷的汽车租赁系统所需的技术要点&#xff0c;为开发者提供一份实用的技术指南。 小程序架构选择 在搭建抖音汽车租赁小程序时&#xff0c;选择合适的小程序架构…