Menu
CoddyTech

Largest Rectangle in Histogram

Um histograma é uma fileira de barras lado a lado, sem espaços entre elas, cada uma com uma unidade de largura: heights[i] é a altura da barra i. Um retângulo dentro dele cobre uma sequência de barras vizinhas e não pode ser mais alto que a barra mais baixa dessa sequência.

Retorne a maior área que esse retângulo pode ter.

Função

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
a altura de cada barra, da esquerda para a direita
Retornainteger
a área do maior retângulo que cabe no histograma

Restrições

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Cada barra tem uma unidade de largura, então um retângulo sobre as barras i a j tem j-i+1 unidades de largura.

Exemplos

Entrada
heights = [2, 5, 6, 3, 4, 1]
Saída
12
Explicação
As quatro barras 5, 6, 3 e 4 têm todas pelo menos 3 de altura, então um retângulo de altura 3 abrange todas elas: 3 × 4 = 12. As duas barras mais altas, 5 e 6, resultam em apenas 5 × 2 = 10.

lock icon+17 testes ocultos ao enviar

challenge icon

Para ir além

Suponha que cada barra tenha sua própria largura, fornecida em um segundo array. O que muda na solução de pilha em uma única passagem?

Redefinir código
def largestRectangleArea(heights):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Caso 3

Entrada

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

Esperado

12