首页 > 其他分享 >456. 132模式

456. 132模式

时间:2023-10-08 19:26:17浏览次数:28  
标签:last maxs 模式 132 single 456 stack 逆序

链接

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

思路

这题其实不难,就是边界条件难想。

我们可以先保证单调栈里是逆序,然后判断单调栈中较小的值是否大于当前元素(满足132的1和2的关系)。

代码

class Solution:
    def find132pattern(self, nums) -> bool:
        # 初始化单调栈
        single_stack = []
        # last_maxs暂存为第二大的值, 初始化为一个极小值, 这样好把数据刷到last_maxs中
        last_maxs = float("-inf")
        # 倒着遍历, 我们需要一个逆序的单调栈, 因为132, 我们需要求32 所以应该是逆序的
        for i in nums[::-1]:
            # 如果当前值小于第二大的值, 即满足了132, 那么就可以判定为True
            if i < last_maxs:
                return True
            # 逆序, 所以栈顶小于当前值的要弹栈
            while single_stack and single_stack[-1] < i:
                # 更新倒数第二大的值, 倒数第二大的值越大, 我们越有可能满足132, 所以可以放心的去求max
                # 并且,while 循环满足的条件是, 栈顶元素小于当前元素, 所以我们还有当前元素兜底, 随便max更新即可
                last_maxs = max(last_maxs, single_stack[-1])
                single_stack.pop()
            # 这条语句起到2条作用
            # 第一, 初始化single_stack
            # 第二, 如第二大的数比当前值还小, 那显然不满足, 证明i就是当前栈里最大的值了, 将i入栈。
            if last_maxs < i:
                single_stack.append(i)
        return False

 

标签:last,maxs,模式,132,single,456,stack,逆序
From: https://www.cnblogs.com/bjfu-vth/p/17749929.html

相关文章

  • 2023-2024-1 20231325 《计算机基础与程序设计》第二周学习总结
    目录作业信息教材学习内容总结1.《计算机科学概论》第一章1)计算系统;2)计算系统的分层;3)抽象;《c语言程序设计》第一章学习编程的原因,了解编程及编程的学习。gcc测试作业信息这个作业属于哪个课程2023-2024-1《计算机基础与程序设计》这个作业的......
  • node-oracledb nodejs 包支持thin 模式了
    node-oracledb从v6.0.0版本来时支持thin模式了,是基于纯javascript开发的驱动,我们终于可以不用依赖比较笨重的oracleclient了属于一个很大的进度,同时python版本也是支持thin模式了,我以前也简单介绍过参考资料https://github.com/oracle/node-oracledb/releaseshttps://me......
  • Zabbix-agent修改为主动模式
    1.zabbix-agent工作模式zabbix-agent进程,有两种工作模式,主动模式,被动模式1.1被动模式被动模式是指zabbix-server将需要请求的数据,发给zabbix-agent,然后agent接收到请求后才进行对客户端机器数据采集,采集完毕后发给zabbix-server,交给zabbix-UI展示。但是这个过程是一次一......
  • 0.MVC模式概述
    MVC模式Model、View、Controller。是一种设计规范,目的是降低业务逻辑之间的耦合。1、Model模型DAO、Service,负责模型数据操作,包括了数据和业务。2、View视图负责模型的展示,用户客户看得到的界面。3、Controller控制器接收请求,发送给model进行处理,模型处理完后接收模型返回......
  • Java设计模式之享元模式
    1.1.概述定义:运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。 1.2.结构享元(Flyweight)模式中存在以下两种状态:1.内部状态,即不会随着环境的改变而改变的可......
  • 设计模式之 State Pattern状态模式
    State模式允许对象在内部状态变化时,变更其行为,并修改其类;优点:定位指定状态的行为,并且针对不同状态来划分行为,使状态转换显式进行;适用:对象的行为依赖于其状态,并且该对象必须在运行时根据其状态修改其行为;操作具有大量的以及多部分组成的取决于对象状态的条件语句; publicc......
  • 设计模式之 Template Method模版方法
    TemplateMethod模式提供了不重写方法的前提下,允许子类重载部分方法的方法;在操作中定义算法的框架,将一些步骤由子类实现,该模式可以再不修改算法结构的情况下,让子类重新定义算法的特定步骤;优点:代码重用的基础技术;适用:想要一次实现算法的不变部分,而使用子类实现算法的可变行为;......
  • 2023-2024-1 20231327 司宏林 《计算机基础与程序设计》第2周学习总结
    学期(如2023-2024-1)学号(如:20231300)《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程<班级的链接>(2022-2023-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/12998......
  • 设计模式(七)桥接
    一、定义将抽象部分与它的实现部分解耦,使两者都能够独立变化,桥接模式是一种结构型模式。二、描述包含以下四个角色:1、Abstraction(抽象类):它是用于定义抽象类的接口,通常是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,它与Implementor之间具......
  • Java设计模式之策略模式
    1.1 概述先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。定......