单调栈
单调栈
- 单调栈:是一种容器,类似于大小堆,一维数组:
- 单调递增栈:从栈低到栈顶是递增的,【记录的是已遍历更大的数,求的是右边第一个更小的数】,获取当前元素,左边大于的第一个数,右边小于的第一个数;
- 单调递减栈:从栈底到栈顶是递减的,【记录的是已遍历更小的数,求的是右边更大的数】,因此当前元素能够获取,左边小于的第一个数,右边大于的第一个数;
- 判断逻辑:
- 大于栈顶,
- 等于栈顶:关键点的细节,判断条件是否是需要满足严格单调关系;
- 小于栈顶,
- 经典题型:
- 每日温度:单调递减栈,其次,从数据层考察,两个数组,循环数组等;
- 接雨水:严格单调递减的栈,
- 考察点:对于当前元素等于栈顶时,置换不知换对该位置的雨水容量不影响,但是影响以它为高的容积宽度【w = i - left - 1】,所以应该更新栈顶元素;
- 柱状图中的最大矩形:严格单调递增的栈,
- 有一个迭代思想,由中间的栈顶求面积,然后逐步向下迭代,求最大值;

浙公网安备 33010602011771号