Ctrl K

Самый узкий отрезок для всех списков

Сложная
Дано k списков целых чисел lists, каждый отсортирован по неубыванию. Найдите отрезок [a, b], который содержит хотя бы одно число из каждого списка, и верните его как [a, b]. Отрезок [a, b] лучше отрезка [c, d], если b − a < d − c, а при равной длине — если a < c. Верните лучший из подходящих отрезков.
Пример 1
lists=[[1, 8, 20], [4, 9], [7, 30]] → [7, 9]

В отрезок [7, 9] попадают 8 из первого списка, 9 из второго и 7 из третьего. Отрезка короче не найти.

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

Подходят [2, 3] и [5, 6], оба длины 1. При равной длине выбираем тот, что начинается раньше.

Пример 3
lists=[[5], [5, 5], [-1, 5]] → [5, 5]
Ограничения
  • 1 ≤ k = len(lists) ≤ 3500
  • 1 ≤ len(lists[i]) ≤ 50
  • -10⁵ ≤ lists[i][j] ≤ 10⁵
  • Каждый lists[i] отсортирован по неубыванию
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВитрина: выручка плюс разнообразие СложнаяЗадания с перерывом на остывание СредняяМетки вразнобой СредняяУбрать половину списка СредняяРазобрать стопки поровну Лёгкая
загружаем Python…
Вход
lists=[[1, 8, 20], [4, 9], [7, 30]]
Ожидается
[7, 9]

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