单调队列
它的队首和普通的队列一样,只能删除元素,而它的队尾既可以添加元素也可以删除元素。 他随队尾输出,出队。
单调队列的作用&原理
就是用来维护一段区间内的单调上升,下降性质,导出性质就是也可以用来维护一个区间内的值。他的原理是这样的:
重复一遍,队列1,2,-3,-4,2.如果元素a入队,从队尾弹出所有大于a的值,再把a加紧队尾。
- 1带入队列,为了初始化。
- 2带入队列,因为1比2小,此时队列为1,2
- -3代入队列,有哪位-3比1,2都小,弹出1,2,-3带入队列
- -4带入队列,因为-4<-3,所以弹出-3,带入-4,此时为-4.
- 2带入队列,因为2大于-4,所以,此时为2,-4.
从队尾到队首开始遍历,如果碰到元素比待入队元素要小,那么这个元素便失去了作因为维护的是最大值,如果有一个比当前值小,那它一定不是最大的,将其出队。直到碰到一个比当前值大的元素,跳出循环;
题目组织代码
题目描述
现在有一堆数字共N个数字(N<=10^6