• Increasing/ Decreasing Stack


    对于此类问题:

    对于元素nums[i],找出往左/右走第一个比它小/大的数字

    我们常常用递增栈/递减栈实现。

    递增栈实现第一个比它小

    递减栈实现第一个比它大

    Example: 2  1  5  6  2  3

    stack: 保证栈是递增的顺序,因此每个数进来之前先删除栈里比它大的数字。

        因此每个数,当它被pop出来时,它在栈里的前一个元素是左边第一个比它小的数,将它pop出来的数是右边第一个比它小的数。

    (1) 2

    (2) 1  (2被1pop出来,2左边第一个比它小的没有,右边第一个比它小的是1)

    (3) 1  5

    (4) 1  5  6

    (5) 1  2    (5, 6 被 2 pop出来。对于5,左边第一个比它小的是1,右边第一个比它小的是2。对于6,左边第一个比它小的是5,右边第一个比它小的是2)

    对于每个元素,因为只进栈出栈一次,所以总体的时间复杂度是O(n)

  • 相关阅读:
    微信支付退款部分代码
    Raspberry PI 点亮LED
    Raspberry PI 摄像头
    RaspberryPI 3B系统烧录
    MySQL基础使用
    MySQL数据库管理系统概述
    Eclipse创建JAVA项目
    Brup Suite拦截https请求
    Github 第一个仓库
    python os模块主要函数
  • 原文地址:https://www.cnblogs.com/ireneyanglan/p/4907975.html
Copyright © 2020-2023  润新知