Ctrl K

Заделать пробелы одним отрезком

Средняя
Дан список отрезков segments, где segments[i] = [start, end]. Отрезки, которые пересекаются или касаются концами, образуют один сплошной кусок: например, [1, 3], [3, 6] и [2, 2] вместе покрывают [1, 6] без пробелов. А вот [1, 2] и [3, 4] — это два разных куска: промежуток между 2 и 3 не покрыт. Нужно добавить ровно один новый отрезок [a, b] длины b − a не больше max_len. Верните наименьшее число сплошных кусков, которое может получиться после этого.
Пример 1
segments=[[2, 4], [7, 9], [10, 12], [20, 25]], max_len=3 → 3

Добавим [4, 7]: отрезки [2, 4], [4, 7], [7, 9] слились в один кусок. Остались ещё [10, 12] и [20, 25] — всего 3.

Пример 2
segments=[[1, 5], [3, 8]], max_len=2 → 1

Отрезки уже образуют один кусок [1, 8]; новый отрезок можно положить внутрь.

Пример 3
segments=[[1, 1], [5, 5], [9, 9]], max_len=8 → 1
Ограничения
  • 1 ≤ len(segments) ≤ 10⁵
  • 1 ≤ start ≤ end ≤ 10⁹
  • 0 ≤ max_len ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиk ближайших значений СредняяПодравнять числа прибавлением СредняяКовёр на окрашенные отрезки СредняяСамая большая группа равных после сдвигов СредняяПодвинуть числа навстречу Средняя
загружаем Python…
Вход
segments=[[2, 4], [7, 9], [10, 12], [20, 25]], max_len=3
Ожидается
3

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