【leetcode前500】456. 132 模式

按经验应当使用一个单调栈,但是这里的用法比较奇特,需要从后往前遍历。

我们考虑递减栈pop过程中被弹出去的元素,如果能够找到一个比前面的大的,就说明成功了。

试想[-1,3,2,0]

栈增长分别为[0]--[2],那么0就是被弹出的元素。被弹出说明了两件事情:1,前面必定有一个比他大的元素。2,只要前面再有一个比它小的那么查找就完成了。

我们用一个变量保存被弹出的最大值,只要遍历时发现有数字比这个值小,就好了。

class Solution:
    def find132pattern(self, nums: List[int]) -> bool:
        k=-0x7fffffff
        stk=[]
        for n in nums[::-1]:
            if n<k:
                return True
            while stk and stk[-1]<n:
                k=max(k,stk.pop())
            stk.append(n)
        return False

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值