-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy path42-fivestar1103.py
26 lines (26 loc) · 1.01 KB
/
42-fivestar1103.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution:
def trap(self, height: List[int]) -> int:
if not height:
return 0
leftMaxArr, rightMaxArr, leftMaxIdx, rightMaxIdx = [height[0]], [height[-1]], 0, len(height) - 1
for i in range(1, len(height)):
if height[i] > leftMaxArr[-1]:
leftMaxArr.append(height[i])
leftMaxIdx = i
else:
leftMaxArr.append(leftMaxArr[-1])
for i in range(len(height) - 2, -1, -1):
if height[i] > rightMaxArr[-1]:
rightMaxArr.append(height[i])
rightMaxIdx = i
else:
rightMaxArr.append(rightMaxArr[-1])
ret = 0
for i in range(1, leftMaxIdx):
ret += leftMaxArr[i] - height[i]
rightMaxArr.reverse()
for i in range(rightMaxIdx + 1, len(height) - 1):
ret += rightMaxArr[i] - height[i]
for i in range(leftMaxIdx + 1, rightMaxIdx):
ret += leftMaxArr[-1] - height[i]
return ret