leetcode 接雨水 python
时间: 2023-10-07 22:03:13 浏览: 64
LeetCode上的接雨水问题是一个经典的算法问题,可以用Python来解决。
首先,我们可以使用两个指针left和right来表示容器的两端,然后使用两个变量left_max和right_max来表示当前位置左边和右边的最大高度。
然后,我们使用一个循环来遍历数组,从左到右更新left_max和right_max的值。在每一个位置,我们可以确定当前容器的高度为min(left_max, right_max)减去当前位置的高度。如果该值大于零,则说明该位置可以存储雨水。
接下来,我们需要定义一个变量来保存雨水的总量。在每一个位置,我们将当前容器的高度与0进行比较,如果大于零,则将该值累加到总量中。
最后,我们返回总量即可。
以下是用Python实现的代码:
def trap(height):
left = 0
right = len(height) - 1
left_max = right_max = water = 0
while 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 -= 1
return water
这样,我们就可以使用上述代码来解决LeetCode上的接雨水问题了。