给定n个表示高度的非负整数,其中每个条的宽度为1,计算下雨后它能捕获多少水。
Input:[0,1,0,2,1,0,1,3,2,1,2,1]
Output:6
Method 1
以数组中最大值为标准,area=max×len(height)。每次循环都减掉没有达到最大值的部分的那层。如下图,第一次减掉黄色的部分,第二次减掉蓝色的部分,第三次减掉粉色的部分。最后结果减掉所有数的和,剩下的就是装水量。
用l和r代表左右两侧,每次l从0开始,r从数组的长度开始向中间合并。当l或者r位置的值小于数组的最大值时用area减当前位置的数。
class Solution:
def trap(self, height: List[int]) -> int:
len_val=len(height)
if not height or len_val < 3:
return 0
max_val=max(height)
res=max_val*len(height)
for i in range(1,max_val+