单调栈定义:
单调栈——就是栈内元素单调递增或者单调递减的栈,单调栈只能在栈顶操作。
性质:
1. 单调栈里的元素具有单调性
2. 元素加入栈前,会在栈顶端把破坏栈单调性的元素都删除
3. 使用单调栈可以找到元素向左遍历第一个比他小的元素,也可以找到元素向左遍历第一个比他大的元素。
4. 单调栈的维护是 O(n) 级的时间复杂度,因为所有元素只会进入栈一次,并且出栈后再也不会进栈了。
举个栗子 ^ _ ^
一个小小的单调增栈()
for(int i=1;i<=len;i++)
{
while( top > 0 && a[stack[top]] > a[i] ) top--;
a[++top]=i;
}
来干道题
POJ2559
dick