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

python每日一题——3最长连续序列

题目

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

答案

这个问题可以使用哈希表(字典)来解决,时间复杂度为O(n)。

具体思路如下:

遍历整个数组,对于每个数字,将其作为键,出现的位置作为值存入字典。
对于每个数字,在字典中查找它之前的最大数字及其出现的位置。
计算当前数字与之前最大数字之间的距离,并更新最大距离。
返回最大距离加1即为最长数字连续序列的长度。
下面是Python代码实现:

def longestConsecutive(nums):  if not nums:  return 0  num_dict = {}  for i, num in enumerate(nums):  if num in num_dict:  num_dict[num] = i  else:  num_dict[num] = i - num  max_distance = 0  longest_length = 0  for num in num_dict:  if num - num_dict[num] > max_distance:  max_distance = num - num_dict[num]  longest_length = max_distance + 1  return longest_length

在这个算法中,我们使用字典存储每个数字出现的位置,并计算当前数字与之前最大数字之间的距离。最后返回最长距离加1即可。

http://www.lryc.cn/news/242027.html

相关文章:

  • 什么?Postman也能测WebSocket接口了?
  • requests库的学习(详细篇)
  • postgreSQL如何快速查询大表数据量
  • 微信小程序内嵌h5页面,实现动态设置顶部标题的功能
  • 手机IP地址会随位置变化吗
  • 为什么考完软考中级还要考高级呢?
  • 03.实现
  • 可视化大屏时代的到来:智慧城市管理的新思路
  • Hibernate的三种状态
  • React 中 useContext 的用法与性能问题详解
  • 流程图是什么,用什么软件做?
  • Linux 家目录和根目录
  • js前端跨屏效果
  • 配置华为云镜像加速器
  • Redis的四种模式:单机、主从、哨兵、集群
  • 【开源】基于Vue.js的民宿预定管理系统
  • 网络安全深入学习第九课——本机信息收集
  • 深入理解C语言指针基础概念:定义、内存地址与声明初始化
  • Django DRF版本号的处理
  • [工业自动化-25]:IDEC和泉RU2S-24D/RU4S-24D继电器的使用说明和接线方式
  • 如何通过短视频提高转化率?
  • 微软离Altman越近,离OpenAI就越远!
  • minio集群部署(k8s内)
  • 【C语言】函数(四):函数递归与迭代,二者有什么区别
  • [原创](免改BIOS)使用Clover升级旧电脑-(高阶玩法)让固态硬盘内置Win11 PE启动系统
  • React项目中发生空白但不报错的原因分析和解决?
  • redis运维(十七)事务
  • Vue框架学习笔记——Vue实例中el和data的两种写法
  • libbz2 for Mac OS makefile
  • 测试工具JMeter的使用