原题:
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.
The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped.
Example:
Input: [0,1,0,2,1,0,1,3,2,1,2,1] Output: 6
题目大意为:给一个列表,元素代表着水坝的高度,求水坝能装下的水的最大体积。
本题可以尝试由水坝的左右两边往中间靠的方法:
class Solution:
def trap(self, height):
n = len(height)
l = 0
r = n-1
level = 0
lower = 0
water = 0
while l < r:
if height[l] <= height[r]:
lower = height[l]
l += 1
else:
lower = height[r]
r -= 1
level = max(level, lower)
water += level - lower
return water