收集雨水问题
给定n个非负整数,表示直方图的方柱的高度,同时,每个方柱的宽度假定都为1。若使用这样形状的容器收集雨水,可以盛多少水量?
如输入:0,1,0,2,1,0,1,3,2,1,2,1;返回6。
题目来源
分析思路:
当水盛满的时候,雨水的面积 = 总面积 - 直方图的面积
从左向右,找比当前柱子A高的第一个柱子B,把柱子A和B之间填充上水,既设置他们之间的柱子高度变为柱子A的高度
然后在向右找比柱子B高的第一个柱子C,把柱子B和C之间填充上水,既设置他们之间的柱子高度变为柱子B的高度……
当两个柱子相邻时不用填充
为了防止漏掉还要从右向左执行一遍
最后雨水的面积 = 总面积 - 直方图的面积
Python代码如下:
from copy import deepcopy
import