- 分类: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.
![](https://img.haomeiwen.com/i5973788/1a223180d690a8b7.png)
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里。
网友评论