42. Trapping Rain Water
https://leetcode.com/problems/trapping-rain-water/
solution
双指针/DP
# 纵向按列计算,每一列计算
class Solution:
def trap(self, height: List[int]) -> int:
max_left = [height[0]] * len(height)
for i in range(1, len(height)):
max_left[i] = max(max_left[i-1], height[i])
max_right = [height[-1]] * len(height)
for i in range(len(height)-2, -1, -1):
max_right[i] = max(max_right[i+1], height[i])
res = 0
for i in range(len(height)):
res += min(max_right[i], max_left[i]) - height[i]
return res时间复杂度:O(n) 空间复杂度:O(n)
单调栈
follow up
Last updated