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

力扣刷题Day 23:最长连续序列(128)

1.题目描述

2.思路

暴力解法是会超出时间限制的。首先将nums写成一个集合(哈希表),无限循环,对于集合顶端的元素向左and向右扩展最大长度,每访问一个元素就把它从集合里删掉,循环的结束条件是集合为空。

3.代码(Python3)

class Solution:def longestConsecutive(self, nums: List[int]) -> int:def neighbor_exist(num):left_num, right_num = num - 1, num + 1current_consecutive = 1while 1:if left_num in nums_set:nums_set.remove(left_num)current_consecutive += 1left_num -= 1else:breakwhile 1:if right_num in nums_set:nums_set.remove(right_num)current_consecutive += 1right_num += 1else:breakreturn current_consecutivenums_set = set(nums)longest_consecutive = 0while 1:if len(nums_set) == 0:return longest_consecutivecurrent_consecutive = neighbor_exist(nums_set.pop())longest_consecutive = max(longest_consecutive, current_consecutive)

4.执行情况

5.感想

看了官方题解发现了更简便的代码,直接遍历集合,如果当前元素不是当前序列的开始元素就continue,如果是就扩展长度直到扩展不了,如下:

class Solution:def longestConsecutive(self, nums: List[int]) -> int:nums_set = set(nums)longest_consecutive = 0for num in nums_set:if (num - 1) not in nums_set:current_consecutive = 1current_num = numwhile (current_num + 1) in nums_set:current_consecutive += 1current_num += 1longest_consecutive = max(longest_consecutive, current_consecutive)return longest_consecutive

但是这个代码执行出来的效果竟然不如我上面写的那个。不过也确实,官方题解是把全部元素都判断了一遍是不是开头,我是用完就删,确实应该相对高效。

http://www.xdnf.cn/news/1008.html

相关文章:

  • Azkaban集群搭建
  • 基于Python的图片/签名转CAD小工具开发方案
  • 13.电阻在EMC设计中的妙用
  • 黑苹果win10和macOS双系统
  • C++ 的史诗级进化:从C++98到C++20
  • MySQL 触发器
  • 三轴云台之激光测距技术篇
  • 软件工程师中级考试-上午知识点总结(上)
  • 小公司面经,当练手了
  • WPS科大讯飞定制版 11.4.1.5| 无广告,省电和降低占用,可与普通版本共存
  • [SpringBoot]配置文件
  • C++ STL:从零开始模拟实现 list 容器
  • 当前中国超融合市场的竞争格局以及针对不同需求场景的超融合产品推荐
  • OpenFeign 使用教程:从入门到实践
  • Augment Code全面解析:新晋AI编程助手全面提升开发效率
  • 语音合成(TTS)从零搭建一个完整的TTS系统-第二节-文本归一化
  • 【HDFS】verifyEC命令校验EC数据正确性
  • 空间应用中心AI4S空间科学实验研究成果发表于《中国科学院院刊》
  • DaemonSet 无法在带有污点的节点上启动 Pod
  • 解决离线部署气隙相关问题
  • 前端实现数据导出成excel
  • 【eNSP实验】带环回接口的多区域OSPF
  • 黑马安装docker网络问题linux
  • OpenCV day7
  • 制作一款打飞机游戏16:空间优化
  • 生产环境问题排查:日志分析与性能瓶颈定位(一)
  • [wifiI]CCA
  • 关于QTableWidget控件中不显示Item的问题解决方法
  • 速通FlinkCDC3.0
  • 【数字图像处理】图像纹理分析