滑动窗口最大值;栈的最小值;

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)

  

 

posted @ 2021-02-14 10:05  ChevisZhang  阅读(75)  评论(0编辑  收藏  举报