zoukankan      html  css  js  c++  java
  • 42. Trapping Rain Water

    Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

    avatag

    The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

    Example:

    Input: [0,1,0,2,1,0,1,3,2,1,2,1]
    Output: 6

    Solution1:(TLE)

    class Solution:
        def trap(self, height):
            """
            :type height: List[int]
            :rtype: int
            """
            res = 0
            for i in range(1,len(height)-1):
                maxleft,maxright = 0,0
                for j in range(i,-1,-1):
                    maxleft = max(maxleft,height[j])
                for j in range(i,len(height)):
                    maxright = max(maxright,height[j])
                res += min(maxright,maxleft) - height[i]
                # print('i',i,'maxleft',maxleft,'maxright',maxright,'ans',min(maxright,maxleft) - height[j])
            return res
    

    每个位置的组左右高度,不是其相邻位置的高度,而是整个左边部分和右边部分的最大值

    Solution2:

    class Solution:
        def trap(self, height):
            """
            :type height: List[int]
            :rtype: int
            """
            if len(height)==0:
                return 0
            res = 0
            leftmax = [0 for i in range(len(height))]
            rightmax = [0 for i in range(len(height))]
            leftmax[0] = height[0]
            for i in range(1,len(height)):
                leftmax[i] = max(height[i],leftmax[i-1])
            rightmax[-1] = height[-1]
            for i in range(len(height)-2,-1,-1):
                rightmax[i] = max(height[i],rightmax[i+1])
            for i in range(1,len(height)-1):
                res += min(leftmax[i],rightmax[i])-height[i]
            return res
    

    先用动态规划求出每个点的情况,然后再算。

  • 相关阅读:
    haproxy常用配置
    分区命令(大于2TB的分区)
    css基础-2 div布局
    css基础-1
    2.HTML5基本标签
    1.HTML基本结构、头部、注释
    AWK数组
    nginx rewrite 基础
    nginx location详解
    Linux命令练习.ziw
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9794359.html
Copyright © 2011-2022 走看看