LeetCode Trapping Rain Water
class Solution:
def trap(self, height: List[int]) -> int:
over = height[:]
def find_maximum(a, b, flag):
m_i = a
if flag == 0:
while b >= a:
if height[b] >= height[m_i]:
m_i = b
b -= 1
elif flag == 1:
while a <= b:
if height[a] >= height[m_i]:
m_i = a
a += 1
return m_i
if len(height) == 0:
return 0
m_i = find_maximum(0, len(height)-1, 1)
# over[m_i] = height[m_i]
a, b = 0, m_i-1
while (a < b):
k = find_maximum(a, b, 0)
# do something
for i in range(k, b+1):
over[i] = height[k]
b = k-1
a, b = m_i+1, len(height)-1
while (a < b):
k = find_maximum(a, b, 1)
# print(a, b, k)
for i in range(a, k):
over[i] = height[k]
a = k+1
# print(over)
ans = 0
for i in range(len(height)):
ans += (over[i] - height[i])
return ans