单调栈实际上就是栈,栈里面的元素按照单调递增或者单调递减排列,满足单调性。
创建单调栈
以单调递减栈为例,遍历数组,如果栈顶没有元素,则将该元素压入栈中,如果当前元素大于栈顶元素,则栈顶出栈,直到当前元素小于栈顶,或者栈中没有其他元素,把当前元素压入栈中。如果当前元素小于栈顶,则直接压入栈中。
参考代码
def nextGreaterElement(nums: list):length = len(nums)res, stack = [-1] * length, []for i in range(length):while stack and nums[stack[-1]] < nums[i]:idx = stack.pop()res[idx] = nums[i]stack.append(i)return res
单调栈作用
单调栈是处理”下一个更大元素”这类问题的一种数据结构
例
739. 每日温度.md
