-
Notifications
You must be signed in to change notification settings - Fork 353
/
Copy pathTrapRainWater.py
48 lines (31 loc) · 1003 Bytes
/
TrapRainWater.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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# Problem : https://practice.geeksforgeeks.org/problems/trapping-rain-water-1587115621/1
class Solution:
def trappingWater(self, arr,n):
#Code here
left = [0]*n
right = [0]*n
left[0] = arr[0]
right[n-1] = arr[n-1]
trap_sum = 0
for i in range (1 , n):
left[i] = max(left[i-1] , arr[i])
for i in range(n-2 , -1 , -1):
right[i] = max(arr[i] , right[i+1])
for i in range (0 , n):
trap_sum += min(left[i] , right[i]) - arr[i]
return trap_sum
#{
# Driver Code Starts
#Initial Template for Python 3
import math
def main():
T=int(input())
while(T>0):
n=int(input())
arr=[int(x) for x in input().strip().split()]
obj = Solution()
print(obj.trappingWater(arr,n))
T-=1
if __name__ == "__main__":
main()
# } Driver Code Ends