Menu
CoddyTech

Largest Rectangle in Histogram

Histogram adalah deretan batang yang berdiri berdampingan tanpa celah, masing-masing lebarnya satu unit: heights[i] adalah tinggi batang i. Sebuah persegi panjang di dalamnya mencakup sederetan batang yang bersebelahan dan tingginya tidak boleh melebihi batang terpendek dalam deretan tersebut.

Kembalikan luas terbesar yang dapat dimiliki persegi panjang seperti itu.

Fungsi

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
tinggi setiap batang, dari kiri ke kanan
Mengembalikaninteger
luas persegi panjang terbesar yang muat di dalam histogram

Batasan

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Setiap batang lebarnya satu unit, jadi persegi panjang yang membentang dari batang i hingga j lebarnya j-i+1 unit.

Contoh

Input
heights = [2, 5, 6, 3, 4, 1]
Output
12
Penjelasan
Batang 5, 6, 3, dan 4 semuanya memiliki tinggi setidaknya 3, jadi persegi panjang dengan tinggi 3 membentang di sepanjang batang-batang itu: 3 × 4 = 12. Dua batang tertinggi hanya menghasilkan 5 × 2 = 10.
challenge icon

Pertanyaan lanjutan

Misalkan setiap batang memiliki lebarnya sendiri, yang diberikan dalam array kedua. Apa yang berubah pada solusi tumpukan satu lintasan?

Reset kode
def largestRectangleArea(heights):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

12