/
k2709
/
matrix_task
Обзор
Документация
Войти
/
k2709
/
matrix_task
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
histogram.py
24 строки
1 KB
urik
Initial commit
06 янв 2025, 18:02
06 янв 2025, 18:02
9d2fadf
Код
Авторство
О чём код?
def max_histogram_area(heights): """ Вычисляет максимальную площадь прямоугольника в гистограмме. :param heights: Список высот гистограммы. :return: Максимальная площадь. """ stack = [] # Стек для хранения индексов max_area = 0 # Максимальная площадь heights.append(0) # Добавляем 0 в конец для удобства обработки for i, h in enumerate(heights): # Пока текущая высота меньше высоты в стеке, обрабатываем while stack and heights[stack[-1]] > h: height = heights[stack.pop()] # Высота текущего прямоугольника width = i if not stack else i - stack[-1] - 1 # Ширина max_area = max(max_area, height * width) # Обновляем максимальную площадь stack.append(i) # Добавляем текущий индекс в стек heights.pop() # Убираем добавленный 0 return max_area heights = [2, 1, 5, 6, 2, 3] print(max_histogram_area(heights))