Stack Posted on 2021-10-30 Edited on 2021-11-25 Disqus: 算法思路:定义: 栈里元素维持由栈底到栈顶从大到小的顺序叫递减栈。跟最小堆一样,递减栈的栈首元素最小。 反之是递增栈,不过此法因为用递减栈比较多,所以统称递减栈。通常是将下标而不是值放入到栈中,这样还可以知道元素间的距离。 应用: 数组不能打乱顺序且求极值 注意事项: 跟最小堆一样,当元素大于栈顶元素的时候才倒逼栈内元素出栈。 Python代码:123456stack = []for i in range(len(li)): while stack and li[i] > li[stack[-1]]: index = stack.pop() stack.append(i) 算法分析:时间复杂度为O(n),空间复杂度O(n)。