简述
单调栈指栈内元素具有单调性的一种栈结构,该结构和普通的栈类似是后进先出,但栈内元素严格单调(相等也不行)。
思想实现
我们用递增栈(指栈顶到栈底为递增)作为例子,设当前元素为x,栈顶为top,当x<top时,直接进栈,不影响栈的单调性。当x>=top时,让栈不断出栈元素直到满足x<top。
代码详解
我们使用数组模拟单调栈,从0开始存元素,tot指针指向栈顶元素的后一个位置,tot=0时表示栈空,出栈则为tot--。
int s[maxn]; while(tot>=1&&s[tot-1]<=x){ tot--; } s[tot++]=x;