题目描述(困难难度)
解题思路
下面是动态规划的代码
python 代码
class Solution:
def trap(self, height: List[int]) -> int:
if not height:
return 0
sum = 0
max_left = [0]*len(height)
max_right = [0]*len(height)
#
max_left[0] = height[0]
max_right[-1] = height[-1]
# 找位置i左边最大值
for i in range(1,len(height)):
max_left[i] = max(height[i-1],max_left[i-1])
# 找位置i右边最大值
for i in range(len(height)-2,-1,-1):
max_right[i] = max(height[i+1],max_right[i+1])
# 求结果
for i in range(1,len(height)-1):
b= min(max_left[i],max_right[i])
if b > height[i]:
a = b-height[i]
sum += a
else:
continue
return sum
s = Solution()
result = s.trap([0,1,0,2,1,0,1,3,2,1,2,1])
print(result) #