Ctrl K

Склейка бронирований

Средняя
Переговорка забронирована несколько раз, бронь bookings[i] = [start, end] занимает отрезок времени от start до end включительно. Брони могут накладываться друг на друга. Склейте все пересекающиеся брони: если два отрезка имеют хотя бы одну общую точку (в том числе если один заканчивается ровно там, где начинается другой), они объединяются в один. Верните получившийся список непересекающихся отрезков, отсортированный по возрастанию начала. Вместе эти отрезки должны покрывать ровно то же время, что и исходные брони.
Пример 1
bookings=[[9, 12], [1, 4], [3, 5], [12, 14]] → [[1, 5], [9, 14]]

[1, 4] и [3, 5] пересекаются и дают [1, 5]. [9, 12] и [12, 14] касаются в точке 12, поэтому тоже сливаются в [9, 14]. Результат отсортирован по началу.

Пример 2
bookings=[[2, 10], [3, 4], [6, 7]] → [[2, 10]]

Обе короткие брони целиком лежат внутри [2, 10].

Пример 3
bookings=[[5, 6], [0, 2]] → [[0, 2], [5, 6]]

Брони не пересекаются, остаются как есть, но идут по возрастанию начала.

Ограничения
  • 1 ≤ длина bookings ≤ 10⁴
  • bookings[i] состоит ровно из двух чисел
  • 0 ≤ start ≤ end ≤ 10⁴
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТройки с нулевой суммой СредняяСумма тройки ближе всего к цели СредняяЧетыре числа с заданной суммой СредняяРазличные перестановки с повторами СредняяРазложить анаграммы по группам Средняя
загружаем Python…
Вход
bookings=[[9, 12], [1, 4], [3, 5], [12, 14]]
Ожидается
[[1, 5], [9, 14]]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 94 теста на сервере, включая скрытые.