美文网首页
leetcode每日一题 python解法 4月4日

leetcode每日一题 python解法 4月4日

作者: Never肥宅 | 来源:发表于2020-04-04 01:39 被阅读0次

难度:困难

题目内容:

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

上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。


image.png

示例:

输入: [0,1,0,2,1,0,1,3,2,1,2,1]
输出: 6

题解:

思路的话,可以先从左向右遍历,如果自己是已经遍历的最高的,然后有比自己高的,那么两者之间肯定是满水
之类的
可以算出来最后的水平面轮廓然后减去所有的柱子

class Solution:
    def trap(self, height: List[int]) -> int:
        curMax=height[0]
        curMaxindex = 0
        rain = 0#先把柱子一起计算,最后再删
        for i in range(len(height)):
            #最高的应该和之前最高的那个组成容器,容器的容积固定,即使再出现高的也不会增加
            if height[i]>=curMax:
                rain += (i - curMaxindex)* curMax
                curMax = height[i]
                curMaxindex = i
                print(rain)
        c = curMaxindex
        curMax=height[len(height)-1]
        curMaxindex = len(height)-1
        for j in range(len(height)-1,c-1,-1):
            print("j",j)
            #倒序着一直到最高
            if height[j]>=curMax:
                rain += (j - curMaxindex)* curMax
                curMax = height[j]
                curMaxindex = j
                print(rain)
        # 两个方向都没有计算最高点
        rain += height[c]
        rain -= sum(height)
        return rain

emmm好像不太对吼。。。
明天醒来再debug啦

相关文章

网友评论

      本文标题:leetcode每日一题 python解法 4月4日

      本文链接:https://www.haomeiwen.com/subject/tderphtx.html