美文网首页
[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