LeetCode 42. 接雨水

2022-08-17  本文已影响0人  草莓桃子酪酪
题目

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

例:
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。

方法:双指针法

由上图可知接雨水的多少取决于某位置左右最高的两个主子中更矮的那个柱子

class Solution(object):
    def trap(self, height):
        sum = 0 
        for i in range(len(height)):
            if i == 0 or i == len(height) - 1:
                continue
            lHeight = height[i-1]
            rHeight = height[i+1]
            for j in range(i-1):
                lHeight = max(lHeight, height[j])
            for j in range(i+2, len(height)):
                rHeight = max(rHeight, height[j])
            result = min(lHeight, rHeight) - height[i]
            if result > 0:
                sum += result
        return sum
参考

代码相关:https://programmercarl.com/0042.%E6%8E%A5%E9%9B%A8%E6%B0%B4.html

上一篇下一篇

猜你喜欢

热点阅读