到底什么是单调堆栈? (例如,它与单调队列有何不同?)
例如。考虑以下整数数组:[0, 2, 1, 3, 4]
。如果我从左到右处理这个数组并将其插入到单调递减的堆栈中,我应该在堆栈中看到什么,为什么?
Here http://www.leetcode-solution.com/2019/06/01/1017-odd-even-jump.html这是 Python 中单调递减堆栈的一个示例,显然它被用在许多解决方案中奇偶跳问题 https://leetcode.com/problems/odd-even-jump/:
def make(A):
result = [None] * N
stack = [] # invariant: stack is decreasing
for i in A:
while stack and i > stack[-1]:
result[stack.pop()] = i
stack.append(i)
return result
如果我在以下输入上运行它A = [0, 2, 1, 3, 4]
I get [2, 3, 3, 4, None]
。我觉得很奇怪,因为它包含两个 3,和一个None
价值。这实际上正确地实现了单调堆栈吗?