Menu
CoddyTech

Largest Rectangle in Histogram

Ein Histogramm ist eine Reihe von Balken, die ohne Lücken nebeneinanderstehen und jeweils eine Einheit breit sind: heights[i] ist die Höhe des Balkens i. Ein Rechteck darin umfasst mehrere benachbarte Balken und kann höchstens so hoch sein wie der niedrigste Balken in diesem Bereich.

Gib die größtmögliche Fläche eines solchen Rechtecks zurück.

Funktion

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
die Höhe jedes Balkens, von links nach rechts
Gibt zurückinteger
die Fläche des größten Rechtecks, das in das Histogramm passt

Einschränkungen

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Jeder Balken ist eine Einheit breit, daher ist ein Rechteck über die Balken i bis j j-i+1 Einheiten breit.

Beispiele

Eingabe
heights = [2, 5, 6, 3, 4, 1]
Ausgabe
12
Erklärung
Die vier Balken 5, 6, 3 und 4 sind alle mindestens 3 hoch, daher erstreckt sich ein Rechteck mit der Höhe 3 über sie: 3 × 4 = 12. Die beiden höchsten Balken, 5 und 6, ergeben nur 5 × 2 = 10.

lock icon+17 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Angenommen, jeder Balken hat seine eigene Breite, die in einem zweiten Array angegeben ist. Was ändert sich an der Ein-Durchlauf-Stack-Lösung?

Code zurücksetzen
def largestRectangleArea(heights):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Fall 3

Eingabe

heights = [2, 5, 6, 3, 4, 1]

Erwartet

12