• 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
    

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

  • 相关阅读:
    安恒X计划12月月赛
    IDA 7.0在Mojava更新后打不开的问题
    ev3_basic——HITCON CTF 2018
    护网杯划水
    python开发中容易犯的错误整合
    使用gunicorn部署Flask项目
    记两个国外CTF的弱pwn
    MongoDB和pymongo自用手册
    深入理解python之二——python列表和元组
    深入理解python之一——python3对象的一些特性
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9794359.html
Copyright © 2020-2023  润新知