当前位置: 首页 > 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/

http://www.dtcms.com/a/94768.html

相关文章:

  • 【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的使用)
  • 3.28日职001:大阪樱花vs浦和红钻,樱花攻守失衡,红钻有望全取三分
  • 解决Cubemx生产的 .ioc文件不能外部打开的方法
  • 格力智造的十年进击
  • 【AI学习】人工神经网络
  • Qt MSVC2017连接mysql数据库
  • 单纯形法详解
  • uniapp uni-swipe-action滑动内容排版改造
  • STM32F103_LL库+寄存器学习笔记09 - DMA串口接收与DMA串口发送,串口接收空闲中断
  • 软件需求未明确非功能性指标(如并发量)的后果
  • 聚势赋能:“人工智能+”激活高质量发展动能与生成式人工智能(GAI)认证的新机遇