Menu
CoddyTech

Largest Rectangle in Histogram

Гистограмма — это ряд столбцов, стоящих бок о бок без промежутков, каждый шириной в одну единицу: heights[i] — это высота столбца i. Прямоугольник внутри неё охватывает последовательность соседних столбцов и не может быть выше самого низкого столбца в этой последовательности.

Верните наибольшую площадь, которую может иметь такой прямоугольник.

Функция

largestRectangleArea(heights: integer-array) → integer
heightsinteger-array
высота каждого столбца слева направо
Возвращаетinteger
площадь наибольшего прямоугольника, который помещается в гистограмме

Ограничения

  • 1 ≤ heights.length ≤ 2 × 104
  • 0 ≤ heights[i] ≤ 105
  • Каждый столбец имеет ширину в одну единицу, поэтому прямоугольник над столбцами от i до j имеет ширину j-i+1 единиц.

Примеры

Ввод
heights = [2, 5, 6, 3, 4, 1]
Вывод
12
Пояснение
Все четыре столбца высотой 5, 6, 3 и 4 имеют высоту не менее 3, поэтому прямоугольник высотой 3 охватывает их: 3 × 4 = 12. Два самых высоких столбца, 5 и 6, дают только 5 × 2 = 10.

lock icon+17 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Предположим, что у каждого столбца своя ширина, заданная во втором массиве. Что изменится в решении с использованием стека за один проход?

Сбросить код
def largestRectangleArea(heights):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

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

Ожидается

12