单调栈
单调栈是一种特殊的数据结构,分为单调递增栈和单调递减栈,保证元素从栈顶到栈底的单调性。一般用于解决一下问题:
- 寻找左侧第一个比当前元素大的元素。
- 寻找左侧第一个比当前元素小的元素。
- 寻找右侧第一个比当前元素大的元素。
- 寻找右侧第一个比当前元素小的元素。
1 单调递增栈
只有比栈顶元素小的才能进入栈,否则需要将栈中比当前元素小的元素出栈,再将当前元素入栈。(保证了栈中的元素都比入栈元素更大,栈顶到栈底单调递增)可以解决寻找左侧第一个比当前元素大的元素和寻找右侧第一个比当前元素大的元素。
2 单调递减栈
只有比栈顶元素大的才能进入栈,否则需要将栈中比当前元素大的元素出栈,再将当前元素入栈。(保证了栈中的元素都比入栈元素更小,栈顶到栈底单调递减)可以解决寻找左侧第一个比当前元素小的元素和寻找右侧第一个比当前元素小的元素。
总结:找第一个比它大的单调递增,找第一个它小的单调递减。