Подборка в МТС Музыке хранится односвязным списком треков, отсортированным от свежих к старым: t₀ → t₁ → … → tₙ₋₁.
Нужен порядок «новинка, потом классика»: t₀ → tₙ₋₁ → t₁ → tₙ₋₂ → ….
Переставьте ссылки next у существующих узлов за O(1) дополнительной памяти и верните голову.
В работе: Режим «Микс» в подборке МТС Музыки: слушатель не устаёт от одних новинок и не скучает на старых треках.
Пример 1
Ввод
head = [1, 2, 3, 4, 5]
Вывод
[1, 5, 2, 4, 3]
1, 5, 2, 4, 3.
Пример 2
Ввод
head = [10, 20, 30, 40]
Вывод
[10, 40, 20, 30]
10, 40, 20, 30.
Ограничения
- 0 ≤ длина списка ≤ 10⁵ (в JavaScript — до 10⁶)
- Дополнительная память O(1), рекурсия не подходит
- Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код
Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула.
print() и console.log() уходят в консоль. Класс ListNode уже объявлен: у узла есть поля val и next. Пустой список — None (в JS — null).
def interleave_ends(head):
Источник: наша задача на данных МТС. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.