Menu
CoddyTech

Trapping Rain Water

Eine Reihe von Balken steht nebeneinander, jeder ist eine Einheit breit: height[i] ist die Höhe des Balkens i. Regenwasser sammelt sich in den Vertiefungen zwischen den Balken. Wasser bleibt nur dann über einem Balken stehen, wenn links und rechts davon jeweils irgendwo ein höherer Balken steht; am ersten und am letzten Balken läuft es ab. Gib die Gesamtmenge an Wassereinheiten zurück, die die Reihe aufnehmen kann.

Funktion

trap(height: integer-array) → integer
heightinteger-array
die Höhe jedes Balkens, von links nach rechts
Gibt zurückinteger
die Gesamtmenge der eingeschlossenen Wassereinheiten

Einschränkungen

  • 1 ≤ height.length ≤ 2 × 104
  • 0 ≤ height[i] ≤ 105
  • Jeder Balken ist eine Einheit breit, und das Wasser bleibt nicht über den ersten oder den letzten Balken hinaus stehen.

Beispiele

Eingabe
height = [0, 3, 1, 0, 2, 5, 1, 2]
Ausgabe
7
Erklärung
Zwischen der 3 und der 5 liegt die Ebene 3: 2 Einheiten über der 1, 3 über der 0, 1 über der 2. Die spätere 1 liegt zwischen der 5 und einer 2, also hat sie den Wert 1. Das ergibt 7.
challenge icon

Weiterführende Frage

Angenommen, die Balken bilden ein 2D-Raster aus Höhen und das Wasser kann in alle vier Richtungen entweichen. Wie würdest du dann das eingeschlossene Wasser zählen?

Code zurücksetzen
def trap(height):
    # Schreibe hier den Code

Test #1

Test #2

Test #3

Argument

height = [0, 3, 1, 0, 2, 5, 1, 2]

Erwartete Ausgabe

7