class Solution:
def trap(self, height: List[int]) -> int:
height = list(height)
result = 0
stack = [0]
for i in range(1,len(height)):
while stack and height[i] > height[stack[-1]]:
a = stack.pop()
if stack:
h = min(height[i],height[stack[-1]]) - height[a]
width = i - stack[-1] - 1
result += h * width
stack.append(i)
return result