接雨水

核心数学思想

image-HAPY.png

超时解法(博主旧解法)

class Solution:
    def trap(self, height: List[int]) -> int:
        left=[]
        right=[]
        for i in range(len(height)):
            left.append(max(height[:i+1]))
            right.append(max(height[i:]))
        sum=0
        for i in range(len(height)):
            sum=sum+(min(left[i],right[i])-height[i])
        return sum

标准解法

class Solution:
    def trap(self, height: List[int]) -> int:
        left=[]
        right=[]
        left_max=0
        right_max=0
        for i in range(len(height)):
            left_max=max(height[i],left_max)
            left.append(left_max)
        for i in range(len(height)-1,-1,-1):
            right_max=max(height[i],right_max)
            right.append(right_max)
        right.reverse()
        sum=0
        for i in range(len(height)):
            sum=sum+(min(left[i],right[i])-height[i])
        return sum
        ```