给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
示例 1:
输入: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 个单位的雨水(蓝色部分表示雨水)。
示例 2:
输入:height = [4,2,0,3,2,5]
输出:9
# 解题
# 定义解题方法:通过画图求水面积
def fun1(height):
ans = 0
h1 = 0
h2 = 0
#水的面积 = h1累加的面积 + h2累加的面积 - 整个框的面积 - 黑色物体的面积
for i in range(len(height)):
h1 = max(h1, height[i])
h2 = max(h2, height[-i - 1])
ans = ans + h1 + h2 - height[i]
return ans - len(height) * h1
# 根据题目输入例子进行验证
height = [4, 2, 0, 3, 2, 5]
print(fun1(height))