当前位置: 首页 > news >正文

算法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

示例 3:

输入:nums = [1,0,1,2]
输出:3

时间复杂度O(n)解法:

class Solution:def longestConsecutive(self, nums: List[int]) -> int:# 去重num_set = set(nums)max_len = 0for num in num_set:# 找到连续列表的起始数据if num-1 not in num_set:current_num = numcurrent_len = 1# 找到起点后,逐一找寻连续列表while current_num+1 in num_set:current_num += 1current_len += 1# 因为set去重后是会打乱顺序的,该句不能省max_len = max(max_len,current_len)return max_len

 时间复杂度O(nlogn)解法:

class Solution:def longestConsecutive(self, nums: List[int]) -> int:if len(nums)<1:return 0nums.sort()count = 1max_len = 1for x in  range(1,len(nums)):if nums[x]-nums[x-1]==1:count+=1elif nums[x]==nums[x-1]:continueelse:count=1if max_len<=count:max_len=countreturn max_len

http://www.dtcms.com/a/313977.html

相关文章:

  • 大型软件系统的主要指标是什么?
  • 电商直播流量爆发式增长,华为云分布式流量治理与算力调度服务的应用场景剖析
  • Win11 下解决 VScode/Trae 插件加载慢, 整个 VScode/Trae 很卡
  • 电脑忘记开机密码怎么办?【图文详解】5种方法重置/更改/取消/设置开机密码?
  • windows双系统下ubuntu20.04安装教程
  • [Oracle] || 连接运算符
  • iOS混淆工具有哪些?功能测试与质量保障兼顾的混淆策略
  • lodash的替代品es-toolkit详解
  • kubernets命令行创建Token并附加权限给dashboard控制台登录
  • 远程测控终端RTU:工业物联的“神经末梢”与远程操控核心
  • 如何安装 nvm-setup.exe?Windows 安装 NVM 管理 Node.js 版本的完整流程(附安装包下载)
  • IPIDEA:全球领先的企业级代理 IP 服务商
  • 开源的现代数据探索和可视化平台:Apache Superset 在 Kubernetes 上安装
  • Seurat的FetchData()函数
  • Redis缓存详解及常见问题解决方案
  • 【编号443】黄河中上游极端降水指数数据(1961-2020年)
  • 安全扫描:目标主机支持RSA密钥交换问题
  • Ubuntu24.04的VSCode中安装MoonBit和MoonBit Toolchain(moon-pilot)
  • 存储函数与触发器:数据库自动化与业务逻辑封装的核心技术
  • ES-301A :让 Modbus 设备无缝接入工业以太网的高效桥梁
  • 408数据结构排序部分知识的复盘:从原理到辨析的系统化梳理
  • Calcite自定义扩展SQL案例详细流程篇
  • Mac中M系列芯片采用rbenv管理ruby版本
  • Tomcat虚拟主机配置详解和多实例部署
  • ubuntu22.04系统实践 linux基础入门命令(三) 用户管理命令
  • 基于Mediapipe_Unity_Plugin实现手势识别
  • 笔记:webpack项目优化图片体积大小时 遇到 图片无法正常显示
  • 可信数据库大会现场,TDengine 时序数据库展示核电场景下的高性能与 AI 创新
  • 小程序七牛云文件上传封装js
  • 入门MicroPython+ESP32:PC远程控制ESP32 LED灯