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. Regen fällt auf die Reihe und sammelt sich in den Vertiefungen zwischen den Balken. Wasser bleibt nur dann über einem Balken stehen, wenn links und rechts davon irgendwo ein höherer Balken steht; hinter dem ersten und dem letzten Balken läuft es ab.

Gib die Gesamtzahl der Einheitsquadrate Wasser 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 des eingeschlossenen Wassers

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 steigt das Wasser bis auf Höhe 3: Es hält 2 Einheiten über dem Balken der 1, 3 über der 0 und 1 über der 2. Die 1 nahe dem Ende liegt zwischen einer 5 und einer 2, daher ist ihre Höhe 2 und sie hält 1 Einheit. 2 + 3 + 1 + 1 = 7.

lock icon+17 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Angenommen, die Balken bilden ein zweidimensionales Raster aus Höhen und das Wasser kann in alle vier Richtungen abfließen. Wie würdest du dann das eingeschlossene Wasser zählen?

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

Fall 1

Fall 2

Fall 3

Eingabe

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

Erwartet

7