- 最近小或者最近大问题:直接单调栈
- 最远小或者最远大问题:排序后优先队列(不需要单调栈,因为问题相似就拎出来了)
- 最大小于或者最小大于问题:排序后单调栈
使用单调栈记住这一点去判断是递增栈还是递减栈:每个位置的值都会进栈一次,这个值如果被pop出栈了,那么就是计算这个值价值的时候。
比方求最近大:那么这个值的价值只能被后面大的去计算,也就是被大的去pop,新来的值会pop栈内小的值,那么就是递减栈。
使用单调栈记住这一点去判断是递增栈还是递减栈:每个位置的值都会进栈一次,这个值如果被pop出栈了,那么就是计算这个值价值的时候。
比方求最近大:那么这个值的价值只能被后面大的去计算,也就是被大的去pop,新来的值会pop栈内小的值,那么就是递减栈。