42. Trapping Rain Water
这题的思路比较简单明确,就是找出当前点的左边最高和右边最高,然后取其中的小值来减去当前的高度就是当前点的蓄水量了。
class Solution(object):
def trap(self, height):
"""
:type height: List[int]
:rtype: int
"""
# 这道题的思路就是找到一个值左边的最高点和右边的最高点,然后取短的并且减去当前的值
if not height or len(height) <= 2:
return 0
left = [0]
for i in range(1, len(height)):
left.append(max(height[i-1], left[-1]))
right = [0]
for i in range(len(height)-2, -1, -1):
right = [max(right[0], height[i+1])] + right
res = 0
for i in range(1, len(height)-1):
res += max(min(left[i], right[i]) - height[i], 0)
return res