建设网站注意实现百度首页排名优化价格
题目内容:
给定 n 个非负整数表示每个宽度为 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 个单位的雨水(蓝色部分表示雨水)。
答案:
# coding:utf-8
# 时间:2024/3/10 17:33
# Pythonit教程网(blog.pythonit.cn)
# Python全栈视频课件获取:www.dqu.cc
# 加速高防cdn:woaiyundun.cn
def trap(height):if not height:return 0left, right = 0, len(height) - 1left_max, right_max = height[left], height[right]water = 0while left < right:# 如果左边的高度小于右边的高度# 则更新左边最大高度,并计算当前位置能接的雨水量if height[left] < height[right]:if height[left] > left_max:left_max = height[left]else:water += left_max - height[left]left += 1# 如果右边的高度小于等于左边的高度# 则更新右边最大高度,并计算当前位置能接的雨水量else:if height[right] > right_max:right_max = height[right]else:water += right_max - height[right]right -= 1return water
height = [0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]
print(trap(height)) # 输出:6