滑动窗口最大值;栈的最小值;
https://leetcode-cn.com/problems/hua-dong-chuang-kou-de-zui-da-zhi-lcof/
https://leetcode-cn.com/problems/min-stack-lcci/
1. 这两题都是要在O(1)时间内得到当前栈内的最小值 或 滑动窗口的最大值;
2. 维护最小栈和双端队列的pop()方法相同,都是判断 出栈元素 是否等于 最小栈栈顶元素 或 窗口左边元素 是否等于 双端队列左边元素;
3. 但是维护最小栈和双向队列的最大值的push方法不同;
1) 单减 最小栈 —— 在栈顶取最小元素
if x<stack_min[ -1 ]: stack_min.append(x)
2) 单减 双端队列 —— 在左侧取最大元素
while x>deuqe[-1]:
deque.pop()
deque.append(x)