Ctrl K

Общие окна в расписаниях

Средняя
Расписания двух людей заданы списками свободных отрезков времени mine и theirs. Каждый отрезок [start, end] замкнутый, то есть включает оба конца. Внутри каждого списка отрезки не пересекаются, не касаются друг друга и идут по возрастанию. Найдите все отрезки времени, когда свободны оба, — пересечения отрезков из mine с отрезками из theirs. Верните их по возрастанию. Пересечение может состоять из одной точки, например [5, 5].
Пример 1
mine=[[9, 12], [14, 17]], theirs=[[10, 15], [17, 19]] → [[10, 12], [14, 15], [17, 17]]

[9, 12] и [10, 15] дают [10, 12]; [14, 17] и [10, 15] — [14, 15]; [14, 17] и [17, 19] касаются в одной точке — [17, 17].

Пример 2
mine=[[0, 3]], theirs=[[5, 8]] → []

Отрезки не пересекаются — общего времени нет.

Пример 3
mine=[[2, 20]], theirs=[[3, 4], [6, 6], [18, 25]] → [[3, 4], [6, 6], [18, 20]]
Ограничения
  • 0 ≤ len(mine), len(theirs) ≤ 10⁴
  • 0 ≤ start ≤ end ≤ 10⁹
  • В каждом списке конец отрезка строго меньше начала следующего
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДве доски и вода СредняяТройки с нулевой суммой СредняяСумма тройки ближе всего к цели СредняяЧетыре числа с заданной суммой СредняяСледующая расстановка по порядку Средняя
загружаем Python…
Вход
mine=[[9, 12], [14, 17]], theirs=[[10, 15], [17, 19]]
Ожидается
[[10, 12], [14, 15], [17, 17]]

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