algorithm-monotonic-stack
单调栈
单调栈(Monotonic Stack)是一种特殊的栈,它首先是一个栈,其次栈中的所有元素单调递增或者单调递减
上下界
单调栈在算法中的应用在于它能够在一次扫描(从左到右)即O(n)的复杂度之内找到数组中每一个元素的后上界(单增栈)或者后下界(单减栈)
2866. 美丽塔 II(2072)
1944. 队列中可以看到的人数(2105)
双单调栈
2454. 下一个更大元素 IV(2175)
单调队列
从「维护单调性」的角度上来说,单调队列和单调栈是一样的。在单调栈的基础上,单调队列多了一个「移除队首」的操作,这类似滑动窗口移动左指针 left 的过程。所以从某种程度上来说,单调队列 = 单调栈 + 滑动窗口。
滑动窗口最值问题
239. 滑动窗口最大值
2944. 购买水果需要的最少金币数(1709)