单调栈和单调队列一样,都是维护一个单调序列。
单调栈性质:
(1)后进先出
(2)只在栈顶进行入栈、出栈操作
(3)单调性指的是从栈顶元素到栈底元素符合严格的单调递增或者单调递减。
具体进栈过程的本质是:维护单调性。以单调递减栈为例,若当前进栈元素为u,从栈顶开始遍历,大于等于u的元素出栈,直到栈顶元素小于u或者栈为空,然后u入栈。
例子:
进栈元素分别为:2,1,4,5,1,3,3
2进栈:[2]
2出栈,1进栈:[1]
4进栈:[1,4]
5进栈:[1,4,5]
5出栈,4出栈,1出栈,1进栈:[1]
3进栈:[1,3]
3出栈,3进栈:[1,3]