3 DS
单调栈
引入
何为单调栈?顾名思义,单调栈即满足单调性的栈结构。与单调队列相比,其只在一端进行进出。
为了描述方便,以下举例及伪代码以维护一个整数的单调递增栈为例。
过程
插入
将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。
例如,栈中自顶向下的元素为 。

插入元素 时为了保证单调性需要依次弹出元素 ,操作后栈变为 。

用伪代码描述如下:
应用
题面
给出个数组成的数列,请你输出对于每个数,在其左边距离它最近的数,若不存在则输出。
用单调递增栈,当该元素可以入栈的时候,栈顶元素就是它左侧第一个比它小的元素。

例题:
Status
Problem
Tags