Menu
CoddyTech

Largest Rectangle in Histogram

Histogram to rząd przylegających do siebie słupków bez przerw, każdy o szerokości jednej jednostki: heights[i] to wysokość słupka i. Prostokąt w histogramie obejmuje ciąg sąsiadujących słupków, a jego wysokość nie może być większa niż wysokość najniższego słupka w tym ciągu.

Zwróć największe pole, jakie może mieć taki prostokąt.

Funkcja

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
wysokość każdego słupka, od lewej do prawej
Zwracainteger
pole największego prostokąta, który mieści się w histogramie

Ograniczenia

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Każdy słupek ma szerokość jednej jednostki, więc prostokąt obejmujący słupki od i do j ma szerokość j-i+1 jednostek.

Przykłady

Wejście
heights = [2, 5, 6, 3, 4, 1]
Wyjście
12
Wyjaśnienie
Wszystkie cztery słupki o wysokości 5, 6, 3 i 4 mają wysokość co najmniej 3, więc prostokąt o wysokości 3 obejmuje je wszystkie: 3 × 4 = 12. Dwa najwyższe słupki, 5 i 6, dają tylko 5 × 2 = 10.

lock icon+17 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Załóżmy, że każdy słupek ma własną szerokość, podaną w drugiej tablicy. Co się zmienia w rozwiązaniu jednokrotnego przejścia ze stosem?

Zresetuj kod
def largestRectangleArea(heights):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

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

Oczekiwane

12