Силуэт города по зданиям

Задача по программированию с проверкой онлайн

Сложность
Сложная
Языки
Python
JavaScript
TypeScript
Java
Go
Темы
Поиск и сортировка
Массивы и списки

Здания стоят на одной прямой; каждое задано списком [left, right, height] — прямоугольник от left до right по горизонтали (0 ≤ left < right ≤ 2³¹ - 1) высотой height (1 ≤ height ≤ 2³¹ - 1). Зданий до 10000, они идут в любом порядке и могут перекрываться. Силуэт — верхний контур их объединения. Опишите его ключевыми точками [x, h]: в точке x высота силуэта становится равной h и держится до следующей точки. Верните точки по возрастанию x; у двух соседних точек высоты разные (без лишних точек), а последняя точка имеет высоту 0. Пустой список зданий даёт [].

Пример: [[2, 9, 10], [3, 7, 15], [5, 12, 12], [15, 20, 10], [19, 24, 8]] → [[2, 10], [3, 15], [7, 12], [12, 0], [15, 10], [20, 8], [24, 0]].


Источник: задача CodeShare

Решить онлайнБесплатно и без регистрации: пишете код в браузере и проверяете его тестами (без аккаунта — несколько задач в день).

Ещё задачи

Все задачи для тренировки