從左到右掃描記錄當前位置的最大值,存入數組A
從右到左掃描記錄當前位置的最大值,存入數組B
A,B對應位置的較小值減去雨水量,就是當前位置可以接的雨水
class Solution:
def trap(self, height: List[int]) -> int:
if not height or len(height) == 0:
return 0
lr,rl =[0]*len(height),[0]*len(height)
maxl = height[0]
for i in range(0,len(height)):
maxl = max(maxl,height[i])
lr[i] = maxl
maxr = height[-1]
for i in range(len(height)-1,-1,-1):
maxr = max(maxr,height[i])
rl[i] = maxr
res = [0] * len(height)
for i in range(0,len(height)):
res[i] = min(lr[i],rl[i]) - height[i]
return sum(res)