6.23 - hard - 9

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
        
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,776评论 0 33
  • My code: 这道题木解法很多。我没有做出来。这个是Stack的解法。思路(参考):Use Stack to ...
    Richardo92阅读 601评论 0 0
  • 归去的未必是远方 归来的都带着绝望 最美的麦田 在临行前的山顶 眺望 万顷麦浪 一只蟋蟀的吟唱也会被察觉 像朔风...
    蓝潭星海阅读 138评论 0 1
  • “跟着感觉走 ,紧抓住梦的手 ,脚步越来越轻越来越快活 ……”,跟着感觉走,让思想在自由的田地里翱翔,让激情在交流...
    爱你的眼神阅读 257评论 0 1