Leetcode 42: Trapping Rain Water
分类:Stack (Monotonic Stack)
难度:Hard (H-/M+)
描述:给了一个整数数组,这个数组可以模拟成一个积水的槽。问这个水槽最大能积多少个单位面积的水
Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
由此图示可见,有六个单位面积的蓝色,对应着六个单位面积的积水。
链接: Trapping Rain Walter.
思路:
此题主要思路是维护一个递减栈。当遇到一个不断递减的bar时,元素入栈。当遇到高的bar时,栈顶元素先行pop出来作为一个洼地,即base
,然后储水面积的高度取决于栈顶元素与扫描到的元素中小的那个,宽度取决于扫描元素的位置以及弹出一次后stack的栈顶元素的前一个位置。
如:[6,4,3,2,1,5]
这个水槽,当扫描到5时,高度为m