Menu
CoddyTech

Largest Rectangle in Histogram

Biểu đồ tần suất là một hàng gồm các cột đứng cạnh nhau, không có khoảng trống, mỗi cột rộng một đơn vị: heights[i] là chiều cao của cột i. Một hình chữ nhật bên trong biểu đồ phủ một dãy các cột liền kề và không thể cao hơn cột thấp nhất trong dãy đó.

Trả về diện tích lớn nhất mà một hình chữ nhật như vậy có thể có.

Hàm

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
chiều cao của mỗi thanh, từ trái sang phải
Trả vềinteger
diện tích của hình chữ nhật lớn nhất có thể nằm gọn trong biểu đồ histogram

Ràng buộc

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Mỗi thanh rộng một đơn vị, vì vậy hình chữ nhật phủ từ thanh i đến j rộng j-i+1 đơn vị.

Ví dụ

Đầu vào
heights = [2, 5, 6, 3, 4, 1]
Đầu ra
12
Giải thích
Các thanh 5, 6, 3 và 4 đều cao ít nhất 3, nên một hình chữ nhật cao 3 trải dài qua các thanh đó: 3 × 4 = 12. Hai thanh cao nhất chỉ cho ta 5 × 2 = 10.
challenge icon

Câu hỏi mở rộng

Giả sử mỗi thanh có độ rộng riêng, được cho trong một mảng thứ hai. Cần thay đổi gì trong lời giải dùng ngăn xếp một lượt?

Đặt lại code
def largestRectangleArea(heights):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

12