Menu
CoddyTech

Container With Most Water

Du erhältst eine Liste height aus nicht negativen ganzen Zahlen. Die Linie i ist eine senkrechte Wand mit der Höhe height[i], die an Position i steht. Je zwei Linien bilden zusammen mit dem Boden einen Behälter, der so viel Wasser fasst wie die Höhe der kürzeren Linie multipliziert mit dem Abstand zwischen den beiden Linien. Die anderen Linien stehen nicht im Weg. Gib die größte Wassermenge zurück, die ein einzelnes Linienpaar fassen kann.

Funktion

maxArea(height: integer-array) → integer
heightinteger-array
die Höhen der Zeilen an den Positionen 0, 1, 2 usw.
Gibt zurückinteger
die größte Wassermenge, die zwei Zeilen fassen können

Einschränkungen

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • Die Antwort ist höchstens 108, daher passt sie in eine 32-Bit-Ganzzahl.

Beispiele

Eingabe
height = [3, 7, 2, 5, 4, 7, 3, 6]
Ausgabe
36
Erklärung
Die Linien an den Positionen 1 und 7 haben die Höhen 7 und 6 und liegen 6 auseinander, also fassen sie 6 × 6 = 36. Die beiden höchsten Linien, die 7er an den Positionen 1 und 5, fassen nur 7 × 4 = 28, und das äußere Paar fasst 3 × 7 = 21.

lock icon+15 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Hier werden die Linien zwischen den beiden, die du auswählst, ignoriert. Wie viel Wasser würde sich zwischen all diesen Linien sammeln, wenn jede Linie stattdessen ein durchgehender Balken wäre? Kannst du das ebenfalls in O(n) berechnen?

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

Fall 1

Fall 2

Eingabe

height = [3, 7, 2, 5, 4, 7, 3, 6]

Erwartet

36