美文网首页
[TwoPointer]42. Trapping Rain Wa

[TwoPointer]42. Trapping Rain Wa

作者: 野生小熊猫 | 来源:发表于2019-02-01 05:00 被阅读0次
    • 分类:TwoPointer/Array
    • 时间复杂度: O(n)

    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.

    image

    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
    

    代码:

    方法:

    class Solution:
        def trap(self, height):
            """
            :type height: List[int]
            :rtype: int
            """
            if height==None or len(height)<3:
                return 0
            
            res=0
            leftmax=0
            rightmax=0
            i=0
            j=len(height)-1
            
            while(i<j):
                leftmax=max(leftmax,height[i])
                rightmax=max(rightmax,height[j])
                if leftmax>rightmax:
                    res+=rightmax-height[j]
                    j-=1
                else:
                    res+=leftmax-height[i]
                    i+=1
                    
            return res
    

    讨论:

    1.感觉很经典的Two Pointer题,不知道为什么放到Hard里。

    相关文章

      网友评论

          本文标题:[TwoPointer]42. Trapping Rain Wa

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