单调栈

什么是单调栈
单调栈是指一个栈内部的元素具有严格单调性的一种
数据结构,分为单调递增栈和单调递减栈。
单调栈的性质
1. 满足栈底到栈顶的元素具有严格单调性。
2. 满足栈的先进后出特性,越靠近栈顶的元素越先出栈

元素进栈过程
对于一个单调递减栈来说,若当前进栈的元素为a,如果 a<栈顶
元素,则直接将a进栈。
如果 a≥栈顶元素,则不断将栈顶元素出栈,直到满足栈为空或
a<栈顶元素,再将 a 入栈。
实现单调栈
实现单调栈STL栈和手写栈均可

单调队列

什么是单调队列
单调队列与单调栈及其相似,把单调栈先进后出的性质改
为先进先出即可。
单调递增队列的元素进队过程
对于一个元素a,如果 a > 队尾元素,那么直接将a扔进
队列,如果a ≤ 队尾元素,则将队尾元素出队列,直到满
足 a > 队尾元素或队列为空,再将a从队尾入队。
同时,如果队首元素,已经失效,则队首元素出队,直
到队首元素仍在有效范围内为止。
实现单调队列
实现单调队列使用STL的deque(双端队列)即可。
由于双端队列即可以在队头操作,也可以在队尾操作,
那么这样的性质就弥补了单调栈只能在一边操作的不足。
可以使得其队首也有一定的限制

posted on 2024-02-21 19:59  风ffff  阅读(16)  评论(0编辑  收藏  举报