Ctrl K

Ближайшее следующее окно

Средняя
В расписании переговорки есть окна slots[i] = [start, end]. Начала всех окон различны. Для каждого окна i найдите окно j, которое начинается не раньше, чем заканчивается окно i (start_j ≥ end_i), причём начинается раньше всех таких. Окно может оказаться подходящим само для себя (j = i). Верните список, где на позиции i стоит индекс найденного окна j или -1, если подходящего окна нет.
Пример 1
slots=[[9, 11], [1, 4], [5, 9], [4, 6]] → [-1, 3, 0, 0]

После окна [1, 4] раньше всех начинается [4, 6] (индекс 3); после [5, 9] — [9, 11] (индекс 0); после [4, 6] — [9, 11]; после [9, 11] начинаться нечему.

Пример 2
slots=[[3, 3], [0, 8]] → [0, -1]

Окно [3, 3] заканчивается там же, где начинается, поэтому подходит само себе. После [0, 8] ничего нет.

Пример 3
slots=[[-2, 5]] → [-1]
Ограничения
  • 1 ≤ len(slots) ≤ 2·10⁴
  • len(slots[i]) == 2
  • -10⁶ ≤ start ≤ end ≤ 10⁶
  • Начала всех окон различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТройки с суммой меньше порога СредняяK-е по величине в упорядоченной таблице СредняяТепло в каждый домик СредняяПары с заданной разницей СредняяТройки палочек для треугольника Средняя
загружаем Python…
Вход
slots=[[9, 11], [1, 4], [5, 9], [4, 6]]
Ожидается
[-1, 3, 0, 0]

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