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

欢乐力扣:最长连续序列

文章目录

  • 1、题目描述
  • 2、思路1
      • 代码


1、题目描述

 最长连续序列。
 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

在这里插入图片描述

2、思路1

 这里我参考题解,讲解的很明白。大致思路是:为了降低遍历的次数,首先判断x-1是否在集合中,若在,则此次遍历可以跳过。因为以x-1为起点的累加绝对比x为起点的序列长。 其余情况则可以不断累加遍历,动态更新序列长度。

代码

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        ans = 0 
        st = set(nums)
        for x in st:
            # 核心思想:
            # 若x-1在集合中,则说明以x-1为起点的绝对比以x为起点长!
            # 因此可以不予考虑遍历
            if x - 1 in st:
                continue 
            # 若当前x已经是起点,则不断累加统计长度。
            y = x + 1
            while y in st:
                y += 1
            # 更新ans:y-x即为长度。
            ans = max(ans, y-x)
        return ans 

http://www.kler.cn/a/562919.html

相关文章:

  • Flink SQL怎么用?
  • Android 10.0 Settings中系统菜单去掉备份二级菜单
  • 【字符串】最长公共前缀 最长回文子串
  • 2025最新Flask学习笔记(对照Django做解析)
  • windows设置暂停更新时长
  • 【多模态大模型】GLM-4-Voice端到端语音交互机器人VoiceAI
  • Ubuntu本地使用AnythingLLM
  • 【解决idea2024.3.3版本Vue插件报错】
  • 【新人系列】Python 入门专栏合集
  • 百度觉醒,李彦宏渴望光荣
  • 【Linux高级IO】掌握Linux高效编程:深入探索多路转接select机制
  • 3-提前结束训练
  • mac升级系统后聚焦Spotlight Search功能无法使用,进入安全模式可解
  • 【AIGC系列】3:Stable Diffusion模型介绍
  • 智慧物流小程序(论文源码调试讲解)
  • 最新版 (持续更新)docker 加速源 linux yum 源
  • 【Java企业生态系统的演进】从单体J2EE到云原生微服务
  • 现代前端框架渲染机制深度解析:虚拟DOM到编译时优化
  • 【MySql】EXPLAIN执行计划全解析:15个字段深度解读与调优指南
  • 渗透第二次作业