-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTrappingRainWater.py
More file actions
65 lines (52 loc) · 1.65 KB
/
TrappingRainWater.py
File metadata and controls
65 lines (52 loc) · 1.65 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""
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.
The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being
trapped. Thanks Marcos for contributing this image!
Example:
Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
"""
#not working yet
class Solution:
def trap(self, height: List[int]) -> int:
water = 0
maxnum = 0
maxlist = []
for num in height:
if num > maxnum:
maxlist.append(num)
maxnum = num
maxnum = 0
maxlistb = []
for num in reversed(height):
if num > maxnum:
maxlistb.append(num)
maxnum = num
for num in reversed(maxlistb[:len(maxlistb)-1]):
maxlist.append(num)
#maxlist.pop(0) #first value
lp = 0 #left pointer
rp = 0 #right pointer
if maxlist == [] or height == []:
return water
while lp < len(height)-1:
print("lp",lp,"rp",rp,"maxnums",maxlist,"water",water)
if rp < len(height)-1:
rp += 1
if maxlist == []:
break
if height[rp] >= maxlist[0]:
ht = min(height[lp],height[rp])
for x in range(lp+1,rp):
water += ht - height[x]
lp = rp
maxlist.pop(0)
pass
return water
"""
My Solution
"""
"""
Fastest Solution
"""