Ctrl K

Список, сложенный с двух концов

Средняя
Дан непустой односвязный список с головой head. Обозначим его узлы по порядку как A₀ → A₁ → … → Aₖ. Перестройте список так, чтобы узлы шли в порядке A₀ → Aₖ → A₁ → Aₖ₋₁ → A₂ → Aₖ₋₂ → … то есть по очереди: первый из оставшихся с начала, затем последний из оставшихся с конца. Менять значения в узлах нельзя — только переставлять сами узлы, меняя ссылки next. Верните голову получившегося списка.
Пример 1
head=list_node([10, 20, 30, 40, 50, 60]) → [10, 60, 20, 50, 30, 40]

Узлы берутся по очереди с начала и с конца: 10, 60, 20, 50, 30, 40. Значения в узлах не меняются — меняются только связи.

Пример 2
head=list_node([7, 3, 9]) → [7, 9, 3]

Список становится 7 → 9 → 3: средний узел оказывается последним.

Пример 3
head=list_node([5]) → [5]
Ограничения
  • В списке от 1 до 5 · 10⁴ узлов
  • 1 ≤ Node.val ≤ 1000
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСимметричная нитка бус ЛёгкаяЗеркальные пары в списке СредняяЛидеры списка СредняяСложение чисел-списков СредняяУбрать k-й узел с конца Средняя
загружаем Python…
Вход
head=list_node([10, 20, 30, 40, 50, 60])
Ожидается
[10, 60, 20, 50, 30, 40]

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