博客
关于我
334 递增的三元子序列(贪心)
阅读量:371 次
发布时间:2019-03-04

本文共 844 字,大约阅读时间需要 2 分钟。

判断数组是否存在长度为3的递增子序列

要解决这个问题,我们需要找到一个算法,在O(n)时间复杂度和O(1)空间复杂度下判断给定数组是否存在长度为3的递增子序列。

方法思路

我们可以使用贪心算法来解决这个问题。具体步骤如下:

  • 初始化变量:维护两个变量a和b,分别记录到目前为止遇到的最小的两个数。
  • 遍历数组:对于数组中的每个元素num:
    • 如果num比a小,则更新a为num。
    • 如果num比a大但比b小,则更新b为num。
    • 如果num既不比a小也不比b小,则说明已经找到一个递增三元组,返回true。
  • 遍历结束:如果遍历完整个数组仍未找到符合条件的三元组,返回false。
  • 这种方法的核心思想是每次尽可能选择最小的数作为递增序列的基础,从而在最短时间内找到符合条件的三元组。

    解决代码

    import sysclass Solution:    def increasingTriplet(self, nums: list[int]) -> bool:        a, b = sys.maxsize, sys.maxsize        for num in nums:            if num <= a:                a = num            elif num <= b:                b = num            else:                return True        return False

    代码解释

    • 初始化:a和b初始化为正无穷大,用于记录递增序列的前两个最小值。
    • 遍历数组:对于每个元素num,首先检查是否比a小,如果是则更新a。接着检查是否比b小,如果是则更新b。否则,直接返回true。
    • 返回结果:如果遍历完所有元素仍未找到符合条件的三元组,返回false。

    这种方法确保了在只需遍历一次数组的情况下,能够高效地判断是否存在长度为3的递增子序列,符合题目要求的时间和空间复杂度。

    转载地址:http://pvgr.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YoloV11自定义数据集实现车辆事故检测(有源码,建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8 + BotSORT实现球员和足球检测与跟踪 (步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8实现高级目标检测和区域计数
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于YoloV8的药丸/片剂类型识别
    查看>>
    OpenCV与AI深度学习 | 基于YOLO和EasyOCR从视频中识别车牌
    查看>>
    OpenCV与AI深度学习 | 基于图像处理的火焰检测算法(颜色+边缘)
    查看>>
    OpenCV与AI深度学习 | 基于拉普拉斯金字塔实现图像融合(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    OpenCV与AI深度学习 | 基于深度学习的轮胎缺陷检测系统
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLOv9分割图像中的对象
    查看>>
    OpenCV与AI深度学习 | 如何使用YOLOv9检测图片和视频中的目标
    查看>>
    OpenCV与AI深度学习 | 如何在 Docker 容器中使用 GPU
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV中更稳更快的找圆方法--EdgeDrawing使用演示(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用OpenCV和Streamlit搭建虚拟化妆应用程序(附源码)
    查看>>