定义:
单调队列,即维护一个具有 单调性的队列,按照遍历顺序入队、出队,而且 入队的时候要维护单调性, 每个元素均只入队、出队 一次,相较于单调栈,单调队列可以 从两头出队,但 只能从队尾入队。
特性:
-
对于 递增/非降队列,队首元素为 最小值;
对于 递减/非升队列,队首元素为 最大值。
-
越先入队的值所在位置越靠前,即越靠近队首的值肯定越先入队(因为只能从队尾入队)
实现:
因为要从两头出队,所以要用 双向队列。
以 非升队列 为例:
deque<int> q;
插入:
void ins(deque<int> &q,int v)
{
while(!q.empty(<