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

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/

相关文章:

  • 【Excalidraw画图】低成本搭建团队手绘白板工具:Excalidraw本地部署与远程流畅使用
  • 备赛蓝桥杯之第十六届模拟赛第1期职业院校组第四题:世纪危机(人口增长推算)
  • Unity映射计算器:使用平面投影
  • 第十二篇《火攻篇》:一把火背后的战争哲学与生存智慧
  • CentOS(最小化)安装之后,快速搭建Docker环境
  • 设计模式(创建型)-建造者模式
  • 《Python实战进阶》No36: 使用 Hugging Face 构建 NLP 模型
  • 【数据库事务、消息队列事务、Redis 事务、Spring 事务 详细分析】
  • 【新手初学】读取服务器敏感文件数据
  • Scavenge算法的优缺点问题
  • K8S学习之基础五十八:部署nexus服务
  • Android 问真八字-v2.1.7[看八字APP]
  • 系统调用 与 中断
  • 【零基础入门】一篇掌握Python中的字典(创建、访问、修改、字典方法)【详细版】
  • 数据结构之优先级队列
  • 【SQL Server数据库备份详细教程】
  • SpringSecurity Web安全配置:HttpSecurity与WebSecurityConfigurerAdapter
  • 树莓派(4B)使用教程-小白之路(NO.1)
  • 游戏引擎学习第185天
  • 02. Linux嵌入式系统学习笔记(二)(编写C程序进行文件操作、模块化编程makefile的使用)
  • 服装网站设计/站长网站统计
  • 做网站编程时容易遇到的问题/seo搜索引擎推广什么意思
  • 设计师联盟/google优化师
  • 科技网站实例/营销策划公司的经营范围
  • 怎么制作属于自己的网站/2024年新闻摘抄十条
  • 怎么做网站一张图/体验式营销