• 滑动窗口:考虑使用单调队列,放进窗口的元素,随着窗口的移动,队列也一进一出,每次窗口移动后,队列可以告诉我们最大值是什么。
  1. 出队:如果移动的元素等于队头元素的值,则将队头元素弹出。

  2. 入队:如果遍历的当前元素大于队头元素,则将所有元素弹出,然后将当前元素入队。

  • 单调栈:通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。

当遇到一个集合和另一个集合是该集合的子集时,优先考虑该集合,从该集合下手,也就得到了对应的子集需要的东西。

最小栈:与原始栈操作保持一致,但要注意,每次操作都要保持栈顶元素为最小值,这样操作才有意义,如果还要存储相同原始的元素,辅助站也就没有了意义。