Menu
CoddyTech

Container With Most Water

Du erhältst eine Liste height mit nicht negativen Ganzzahlen. Die Linie i ist eine vertikale Wand der Höhe height[i] an Position i. 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 maximale Wassermenge, die zwei Zeilen fassen können

Einschränkungen

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • Die Antwort ist höchstens 108 groß und passt daher 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 mit den Höhen 7 und 6 stehen 6 Einheiten auseinander und fassen 6 × 6 = 36. Die beiden höchsten Linien, die 7er an den Positionen 1 und 5, fassen nur 7 × 4 = 28.
challenge icon

Weiterführende Frage

Hier werden die Linien zwischen deinen beiden ignoriert. Wenn jede Linie ein durchgehender Balken wäre, wie viel Wasser würde sich insgesamt zwischen ihnen sammeln? Kannst du das auch in O(n) berechnen?

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

Test #1

Test #2

Argument

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

Erwartete Ausgabe

36