栈,是一种只在一段进来和出去的高级数据结构,跟队列不同,队列是一段进,另一端出的数据结构。
而单调栈,是一种特殊的栈结构,其中每个元素都满足单调递增或单调递减的条件。 单调栈在入栈时,只有满足特定条件的元素才能入栈,否则需要先将栈中不符合条件的元素弹出,直到满足条件为止。这种特性使得单调栈在处理某些问题时非常有效。
单调栈递增:只有比栈顶元素小的元素才能入栈,否则需要将栈中比当前元素大的所有元素弹出,直到遇到一个比当前元素小的元素为止。
单调递减栈:只有比栈顶元素大的元素才能入栈,否则需要将栈中比当前元素小的所有元素弹出。
单调栈的应用场景
- 寻找下一个更大/更小的元素:在数组中寻找某个元素的下一个更大或更小的元素位置。
- 处理区间问题:在处理某些需要找到区间两端点满足特定条件的区间问题时,单调栈非常有用。