42 接雨水

  • 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
  • 输出:6
  • 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)

silu:
维护一个单调递减栈,当递增时,出栈时,记录当前的雨水存储量。
单调栈中存储数组下标,是为了得到雨水的宽度,并可以通过下标得到数组的高度

84 最大矩形

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。
求在该柱状图中,能够勾勒出来的矩形的最大面积。

  1. 输入:heights = [2,1,5,6,2,3]
  2. 输出:10
  3. 解释:最大的矩形为图中红色区域,面积为 10

思路:
使用单调递增栈,递减时,计算此时的最大矩阵;最后要把stack掏空