[TwoPointer]42. Trapping Rain Wa

2019-02-01  本文已影响0人  野生小熊猫

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里。

上一篇 下一篇

猜你喜欢

热点阅读