Силуэт города по зданиям
Задача по программированию с проверкой онлайн
- Сложность
- Сложная
- Языки
- 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