Menu
CoddyTech

Largest Rectangle in Histogram

Histogram, aralarında boşluk olmadan yan yana duran ve her biri bir birim genişliğinde olan bir çubuk sırasıdır: heights[i], i çubuğunun yüksekliğidir. İçindeki bir dikdörtgen, yan yana bir dizi çubuğu kapsar ve bu dizideki en kısa çubuktan daha yüksek olamaz.

Böyle bir dikdörtgenin sahip olabileceği en büyük alanı döndürün.

Fonksiyon

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
soldan sağa her çubuğun yüksekliği
Döndürürinteger
histograma sığan en büyük dikdörtgenin alanı

Kısıtlar

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Her çubuk bir birim genişliğindedir; bu nedenle i ile j arasındaki çubukların üzerindeki bir dikdörtgenin genişliği j-i+1 birimdir.

Örnekler

Girdi
heights = [2, 5, 6, 3, 4, 1]
Çıktı
12
Açıklama
5, 6, 3 ve 4 uzunluğundaki dört çubuğun tümü en az 3 yüksekliğindedir; bu nedenle yüksekliği 3 olan bir dikdörtgen bunların üzerinden geçer: 3 × 4 = 12. En uzun iki çubuk olan 5 ve 6 ise yalnızca 5 × 2 = 10 verir.

lock iconGönderirken +17 gizli test

challenge icon

Ek soru

Her çubuğun, ikinci bir dizide verilen kendi genişliği olduğunu varsayalım. Tek geçişli yığın çözümünde neler değişir?

Kodu sıfırla
def largestRectangleArea(heights):
    # Kodu buraya yazın
Test durumları

Durum 1

Durum 2

Durum 3

Girdi

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

Beklenen

12