Forum » Programiranje » 42. Trapping Rain Water
42. Trapping Rain Water
HotBurek ::
Dobro jutro.
Evo, fatnje in dekline. Da ne bo danes aktualna samo politika in pripadajoči kurberaj...
Na internetih sem našel sledečo nalogo:
42. Trapping Rain Water
https://leetcode.com/problems/trapping-...
Ker sem bil pri reševanju naloge neuspešen, sem šel iskat po internetih in našel rešitev (prvi primer) na sledeči strani:
https://www.geeksforgeeks.org/trapping-...
Pogledal sem si primer, napisan v programskem jeziku Python, in napisal praktično isti primer "malo po moje":
Output:
Tisti, kar mi zaenkrat še ne gre v račun, je ukaz (njihov primer) na liniji 18 in 19:
Pri meni ne deluje, ker prišteva tudi negativne številke. Kar pa naj ne bi počel. To sedaj iščem, kaj je drugače.
----------------------
UPDATE
Zgleda sem rešil. Popravil sem, kaj predstavlja left in right array. Kot kaže, moreta ta dva array-a poleg tistega, kar je levo ali desno od trenutne pozicije, vsebovati tudi element na sami poziciji.
Se pravi, če je array [1, 2, 3, 4, 5] in smo na sredini (na 3-ki), je left array [1, 2, 3], right array pa [3, 4, 5].
As always... well done.
Evo, fatnje in dekline. Da ne bo danes aktualna samo politika in pripadajoči kurberaj...
Na internetih sem našel sledečo nalogo:
42. Trapping Rain Water
https://leetcode.com/problems/trapping-...
Ker sem bil pri reševanju naloge neuspešen, sem šel iskat po internetih in našel rešitev (prvi primer) na sledeči strani:
https://www.geeksforgeeks.org/trapping-...
Pogledal sem si primer, napisan v programskem jeziku Python, in napisal praktično isti primer "malo po moje":
height_elements = [0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1]; # height_elements = [0, 1, 0, 2]; # height_elements = [2 ,1, 0, 1, 2]; # height_elements = [2, 1, 5, 3, 1, 0, 4]; total = 0; res = 0 print(height_elements); for i in range(1, len(height_elements) - 1): left_elements = height_elements[0 : i]; right_elements = height_elements[i + 1:]; print(str(left_elements) + " " + str(height_elements[i]) + " " + str(right_elements) + " ", end=""); max_left = max(left_elements); max_rigth = max(right_elements); sum = (min(max_left, max_rigth) - height_elements[i]); if sum > -1: print("sum = " + str(sum), end=""); else: print("sum =" + str(sum), end=""); res += (min(max_left, max_rigth) - height_elements[i]); if res > -1: print(" res = " + str(res), end=""); else: print(" res =" + str(res), end=""); if sum > 0: total = total + sum; print(" total = " + str(total)); print("res = " + str(res)); print("total = " + str(total));
Output:
[0, 1, 0, 2, 1, 0, 1, 3, 2, 1, 2, 1] [0] 1 [0, 2, 1, 0, 1, 3, 2, 1, 2, 1] sum =-1 res =-1 total = 0 [0, 1] 0 [2, 1, 0, 1, 3, 2, 1, 2, 1] sum = 1 res = 0 total = 1 [0, 1, 0] 2 [1, 0, 1, 3, 2, 1, 2, 1] sum =-1 res =-1 total = 1 [0, 1, 0, 2] 1 [0, 1, 3, 2, 1, 2, 1] sum = 1 res = 0 total = 2 [0, 1, 0, 2, 1] 0 [1, 3, 2, 1, 2, 1] sum = 2 res = 2 total = 4 [0, 1, 0, 2, 1, 0] 1 [3, 2, 1, 2, 1] sum = 1 res = 3 total = 5 [0, 1, 0, 2, 1, 0, 1] 3 [2, 1, 2, 1] sum =-1 res = 2 total = 5 [0, 1, 0, 2, 1, 0, 1, 3] 2 [1, 2, 1] sum = 0 res = 2 total = 5 [0, 1, 0, 2, 1, 0, 1, 3, 2] 1 [2, 1] sum = 1 res = 3 total = 6 [0, 1, 0, 2, 1, 0, 1, 3, 2, 1] 2 [1] sum =-1 res = 2 total = 6 res = 2 total = 6
Tisti, kar mi zaenkrat še ne gre v račun, je ukaz (njihov primer) na liniji 18 in 19:
# Update the maximum water res += (min(left, right) - arr[i])
Pri meni ne deluje, ker prišteva tudi negativne številke. Kar pa naj ne bi počel. To sedaj iščem, kaj je drugače.
----------------------
UPDATE
Zgleda sem rešil. Popravil sem, kaj predstavlja left in right array. Kot kaže, moreta ta dva array-a poleg tistega, kar je levo ali desno od trenutne pozicije, vsebovati tudi element na sami poziciji.
Se pravi, če je array [1, 2, 3, 4, 5] in smo na sredini (na 3-ki), je left array [1, 2, 3], right array pa [3, 4, 5].
left_elements = height_elements[0 : i + 1]; right_elements = height_elements[i:];
As always... well done.
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window
- spremenilo: HotBurek ()
sbawe64 ::
Hard problemi niso za vsakega
Ena boljših razlag
NC včasih mi ravno vsem razumljiv
Če te zanimajo lc dsa problemi, tale tudi zelo razumljivo razlaga
https://www.youtube.com/@nikoo28/videos
Ena boljših razlag
NC včasih mi ravno vsem razumljiv
Če te zanimajo lc dsa problemi, tale tudi zelo razumljivo razlaga
https://www.youtube.com/@nikoo28/videos
2020 is new 1984
Corona World order
Corona World order
Zgodovina sprememb…
- spremenilo: sbawe64 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Kako napisat SQL query?Oddelek: Programiranje | 1306 (512) | HotBurek |
» | Algoritem za razbitje seznama in kasnejše združevanje nazajOddelek: Programiranje | 1106 (515) | Spura |
» | [SQL] Pohitritev izpisaOddelek: Programiranje | 2915 (1814) | kuall |
» | Python - pomoč!Oddelek: Programiranje | 1207 (1043) | lknix |
» | Verjetnost pri kroglicahOddelek: Šola | 1614 (1311) | Math Freak |