一、单调栈简介
一类具备单调性(顺序)的特殊栈普通栈,对入栈的数据没有顺序要求,单调栈要求栈中的数据是有序的。、
二、递增栈与递减栈
- 单调递增栈:栈中数据出栈的序列为单调递增序列
- 单调递减栈:栈中数据出栈的序列为单调递减序列
三、代码实现
Stack<Integer> stack=new Stack<>();
for (int value:array) {
if (stack.isEmpty() ||stack.peek()>=value){
//栈为空或 栈顶元素大于等于当前比较元素
stack.push(value);//入栈;
}else{
while (!stack.isEmpty()&&stack.peek()<value){
//栈不为空 && 栈顶元素小于当前元素
stack.pop();//栈顶元素出栈;
//更新结果;
}
stack.push(value);//当前数据入栈;
}
}