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

力扣刷题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

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

相关文章:

  • HarmonyOS-ArkUI:关键帧动画 keyFrameAnimateTo
  • vue部署到nginx服务器 启用gzip
  • Python 网络编程:TCP 与 UDP 协议详解及实战代码
  • 服务器口令长度、强度、时效限制
  • 基于Python Socket的多线程聊天程序案例分析
  • Springboot集成websocket实现消息推送
  • 【C++教程】C++中为什么优先使用 cout/cin流
  • Windows网络及服务:制作系统盘
  • rk3588上完成halcon的形状模型配准以及和opencv的图像转换
  • 算法 | 成长优化算法(Growth Optimizer,GO)原理,公式,应用,算法改进研究综述,matlab代码
  • 【MySQL】MySQL中的数据类型详解
  • 【前端】【面试】【业务场景】前端如何获取并生成设备唯一标识
  • 使用pyinstaller打包fastapi项目的问题记录
  • 01-初识前端
  • 级联vs端到端、全双工、轮次检测、方言语种、商业模式…语音 AI 开发者都在关心什么?丨Voice Agent 学习笔记
  • 深度学习3.5 图像分类数据集
  • 每日算法-250421
  • Java 并发包核心机制深度解析:锁的公平性、异步调度、AQS 原理全解
  • 【MySQL】:数据库事务管理
  • JavaEE--2.多线程
  • 现货黄金价格站上3400美元,今年迄今累涨逾29%
  • 重大虚开发票偷税骗补案被查处:价税2.26亿,涉700余名主播
  • 吕治国执掌全国唯一的热带海洋大学,曾从教育部“空降”海南
  • 对话地铁读书人|科研服务者岳先生:地铁适合浅阅读
  • 圆桌|耐心资本对科技创新有何意义?天使投资最关注哪些要素?
  • 碎片化时代如何阅读?巴金图书馆推出世界读书日系列活动