Trapping Rain Water
Description:
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.
Trapping Rain Water
Example
Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.
Challenge
O(n) time and O(1) memory
O(n) time and O(n) memory is also acceptable.
Code:
class Solution:
"""
@param heights: a list of integers
@return: a integer
"""
def trapRainWater(self, heights):
# write your code here
highLeft, highRight, res = 0, 0, 0
lh = len(heights)
print("mark0")
high = [[0, 0] for i in range (lh)]
print("mark")
for i in range(lh):
highLeft = max(highLeft, heights[i])
high[i][0] = highLeft
for i in range(lh):
highRight = max(highRight, heights[lh-1-i])
high[lh-1-i][1] = highRight
for i in range(len(high)):
res += min(high[i])-heights[i]
return res