Menu
CoddyTech

Largest Rectangle in Histogram

DifícilPila monótonapython iconjava iconcpp iconc iconjs icon+10

Un histograma es una fila de barras contiguas, sin espacios entre ellas, cada una de una unidad de ancho: heights[i] es la altura de la barra i. Un rectángulo dentro del histograma abarca un conjunto de barras vecinas y no puede ser más alto que la barra más baja de ese conjunto.

Devuelve el área más grande que puede tener un rectángulo de este tipo.

Función

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
la altura de cada barra, de izquierda a derecha
Devuelveinteger
el área del rectángulo más grande que cabe en el histograma

Restricciones

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Cada barra tiene una unidad de ancho, así que un rectángulo sobre las barras i a j tiene j-i+1 unidades de ancho.

Ejemplos

Entrada
heights = [2, 5, 6, 3, 4, 1]
Salida
12
Explicación
Las cuatro barras 5, 6, 3 y 4 tienen todas una altura de al menos 3, así que un rectángulo de altura 3 las abarca: 3 × 4 = 12. Las dos barras más altas, 5 y 6, solo dan 5 × 2 = 10.

lock icon+17 pruebas ocultas al enviar

challenge icon

Para ir más allá

Supón que cada barra tiene su propio ancho, indicado en un segundo array. ¿Qué cambia en la solución de una sola pasada con pila?

Restablecer código
def largestRectangleArea(heights):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

12