Menu
CoddyTech

Largest Rectangle in Histogram

DifficileStack monotonopython iconjava iconcpp iconc iconjs icon+10

Un istogramma è una fila di barre affiancate senza spazi, ciascuna larga un’unità: heights[i] è l’altezza della barra i. Un rettangolo al suo interno copre una serie di barre adiacenti e non può essere più alto della barra più bassa della serie.

Restituisci l’area massima che un rettangolo di questo tipo può avere.

Funzione

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
l'altezza di ciascuna barra, da sinistra a destra
Restituisceinteger
l'area del rettangolo più grande che entra nell'istogramma

Vincoli

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Ogni barra è larga un'unità, quindi un rettangolo che copre le barre da i a j è largo j-i+1 unità.

Esempi

Input
heights = [2, 5, 6, 3, 4, 1]
Output
12
Spiegazione
Le quattro barre 5, 6, 3 e 4 sono tutte alte almeno 3, quindi un rettangolo di altezza 3 le copre: 3 × 4 = 12. Le due barre più alte, 5 e 6, danno solo 5 × 2 = 10.

lock icon+17 test nascosti all’invio

challenge icon

Per approfondire

Supponiamo che ogni barra abbia una propria larghezza, indicata in un secondo array. Cosa cambia nella soluzione con stack in un solo passaggio?

Ripristina il codice
def largestRectangleArea(heights):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Caso 3

Input

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

Atteso

12