单调栈即满足单调性的栈结构,插入时要保证栈的单调性。
它适合解决那些需要找到 下一个/上一个更大/小值
的问题。
按照从 栈顶到栈底
的顺序,递增则为单调递增栈,递减则为单调递减栈。
左侧为栈底,右侧为栈顶:
单调递增栈:[5,4,3,2,1]
单调递减栈:[1,2,3,4,5]
对于单调栈,在 插入
时,需要去比较入栈元素和栈顶元素的大小。
以单调递增栈为例子,要保证从栈顶到栈底是递增的关系。
入栈时,要保持栈顶的元素大于等于入栈的元素。
如果栈顶元素比入栈元素小,则将栈顶元素弹出,直到栈顶元素大于等于入栈元素,或者栈为空。