单调队列和单调栈的应用
单调队列“单调队列,就是一个符合单调性质的队列,它同时具有单调的性质以及队列的性质。他在编程中使用频率不高,但却占有至关重要的地位。它的作用很简单,就是为了维护一组单调数据,让我们在运行的过程中能够快速寻求前k个或后k个中最大或最小的值。”
可以查询区间最值(不能维护区间k大,因为队列中很有可能没有k个元素)
优化DP(见参考文献3)
单调队列一般是用于优化动态规划方面问题的一种特殊数据结构,且多数情况是与定长连续子区间问题相关联。
单调栈即可完成的对于某个元素i:
左边区间第一个比它小的数,第一个比它大的数
确定这个元素是否是区间最值
右边区间第一个大于它的值
到 右边区间第一个大于它的值 的距离
确定以该元素为最值的最长区间
The end;