单调栈详解

简述

  单调栈指栈内元素具有单调性的一种栈结构,该结构和普通的栈类似是后进先出,但栈内元素严格单调(相等也不行)。

思想实现

  我们用递增栈(指栈顶到栈底为递增)作为例子,设当前元素为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;

 

posted @ 2020-04-14 20:51  艾尔夏尔-Layton  阅读(301)  评论(0编辑  收藏  举报