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

LeetCode讲解篇之456. 132 模式

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

这题需要我们尝试找到三个数,假设三个数的下标分别是i,j,k,需要满足条件:i < j < k && nums[i] < nums[k] < nums[j]
这类型的题目我们一般尝试使用控制变量法,针对这题我们可以将 j 和 k 控制住,用一个最大的 k 来表示,那么我们这题就转化为是否能找到三个数满足条件:i < maxK && nums[i] < nums[maxK]
对于maxK,我们可以使用单调栈求解

题解代码

func find132pattern(nums []int) bool {
    n := len(nums)
    // 从栈顶到栈底单调递增的单调栈
    st := []int{nums[n - 1]}
    maxK := math.MinInt

	// 倒序遍历
    for i := n - 2; i >= 0; i-- {
        if nums[i] < maxK {
        	// 满足条件:i < maxK && nums[i] < nums[maxK]
            return true
        }

        // 维护单调栈,并且尝试更新maxK
        for len(st) > 0 && nums[i] > st[len(st) - 1] {
            maxK = max(maxK, st[len(st) - 1])
            st = st[:len(st) - 1]
        }
        st = append(st, nums[i])
    }

	// 不存在满足条件:i < maxK && nums[i] < nums[maxK] 的情况
    return false
}

题目链接

https://leetcode.cn/problems/132-pattern/description/


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

相关文章:

  • 鸿蒙生态开发
  • OSI 模型详解及详细知识总结
  • C# CancellationTokenSource CancellationToken Task.Run传入token 取消令牌
  • 使用 Nginx 实现镜像流量:提升系统可用性与负载均衡
  • 深入剖析ReLU激活函数:特性、优势与梯度消失问题的解决之道,以及Leaky ReLU 和 Parametric ReLU
  • WordPress分类目录绑定二级域名插件
  • 【Vitis AI】FPGA设备使用PyTorch 运行 ResNet18获得10000fps
  • 制作PaddleOCR/PaddleHub的Docker镜像
  • L2-052 吉利矩阵
  • 从双指针到单调栈,深挖“接雨水”的算法奥秘
  • 价值流映射(Value Stream Mapping):从流程可视化到敏捷效能革命
  • Haption力反馈遥操作机器人:6自由度高精度技术,定义远程操作新标准
  • 【Tauri2】001——安装及运行
  • 算法关键知识汇总
  • 人工智能笔记
  • 浅谈:《嵌入式软件中的那些数据结构》
  • 算法刷题整理合集(七)·【算法赛】
  • 深入理解 tree 命令行工具:目录结构可视化的利器
  • Elasticsearch 倒排索引 和 正排索引
  • python全栈-前端