LeetCode 42. Trapping Rain Water-五秒内就能理解的O(n)思路

原题链接

https://leetcode-cn.com/probl...

解题思路

我们首先找出数组height中最高墙(top)的位置(top_index)。那么,对于墙的左侧部分,right_max已经确定;对于墙的右侧,left_max已经确定(都等于top)。 之后对左右侧分别求蓄水量,期间分别维护left_max和right_max即可。

欢迎在我的博客轻松探索更多思路

代码

class Solution:
    def trap(self, height: List[int]) -> int:

        result=0
        if len(height)<3:
            return 0

        top=max(height)
        top_index=height.index(max(height))
        max_left=height[0]
        max_right=height[-1]

        if top_index>=1:
            for i in range(1,top_index,1):
                result+=max(0,min(max_left,top)-height[i])
                max_left=max(max_left,height[i])

        if top_index

你可能感兴趣的:(LeetCode 42. Trapping Rain Water-五秒内就能理解的O(n)思路)