Ctrl K

Вставка вместо куска списка

Средняя
Даны два односвязных списка: base и insert. Узлы base нумеруются с нуля. Удалите из base все узлы с индексами от start до end включительно и вставьте на их место весь список insert целиком. Верните голову получившегося списка. Первый и последний узлы base никогда не удаляются. Например, если base — это 7 → 2 → 9 → 4 → 6, start = 1, end = 3, а insert — это 50 → 60, то получится 7 → 50 → 60 → 6.
Пример 1
base=list_node([7, 2, 9, 4, 6]), start=1, end=3, insert=list_node([50, 60]) → [7, 50, 60, 6]

Узлы с индексами 1–3 (2, 9, 4) вырезаются, на их место встают 50 и 60: [7, 50, 60, 6].

Пример 2
base=list_node([1, 2, 3]), start=1, end=1, insert=list_node([8, 8, 8]) → [1, 8, 8, 8, 3]

Вырезается только средний узел 2, вместо него вставляются три восьмёрки.

Пример 3
base=list_node([5, 0, 0, 0, 5]), start=2, end=3, insert=list_node([1]) → [5, 0, 1, 5]
Ограничения
  • 3 ≤ длина base ≤ 10⁴
  • 1 ≤ длина insert ≤ 10⁴
  • 1 ≤ start ≤ end < длина base − 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСложение чисел-списков СредняяУбрать k-й узел с конца СредняяОбмен соседей парами СредняяХвост списка — в начало СредняяОтсортированный список без повторов Средняя
загружаем Python…
Вход
base=list_node([7, 2, 9, 4, 6]), start=1, end=3, insert=list_node([50, 60])
Ожидается
[7, 50, 60, 6]

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