目录 一、单调栈 情形一:寻找一个数左边第一个小于它的数 情形二:寻找一个数左边第一个小于它的数的下标 情形三:寻找一个数右边第一个大于它的数 情形四:寻找一个数右边第一个大于它的数的下标 二、单调栈的应用 2.1 单调栈模板题I 2.2 单调栈模板题II 2.3 Bad Hair Day 三、单调队列 四、单调队列的应用 4.1 滑动窗口 一、单调栈 所谓单调栈,就是指满足单调性的栈结构: 单调递增栈: 栈中元素从栈底到栈顶是递增的; 单调递减栈: 栈中元素从栈底到栈顶是递减的。 例如对于单调递增栈,向其中插入元素的时候,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素: stack<int> stk; void insert(int x) { while (!stk.empty