Ctrl K

Сначала нечётные места

Средняя
Дан односвязный список head. Пронумеруем узлы с единицы: первый узел стоит на нечётном месте, второй — на чётном и так далее. Перестройте список так, чтобы сначала шли все узлы с нечётных мест, а за ними — все узлы с чётных. Внутри каждой группы узлы сохраняют исходный порядок. Верните голову получившегося списка. Попробуйте обойтись O(1) дополнительной памяти и временем O(n): переставляйте сами узлы, а не создавайте новые.
Пример 1
head=list_node([7, 3, 9, 1, 4, 8]) → [7, 9, 4, 3, 1, 8]

На нечётных местах (1-м, 3-м, 5-м) стоят 7, 9, 4, на чётных — 3, 1, 8. Сначала первая группа, затем вторая.

Пример 2
head=list_node([5, -2]) → [5, -2]

Два узла уже стоят в нужном порядке.

Пример 3
head=list_node([]) → None

Пустой список остаётся пустым.

Ограничения
  • В списке от 0 до 10⁴ узлов
  • -10⁶ ≤ Node.val ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСложение чисел-списков СредняяУбрать k-й узел с конца СредняяОбмен соседей парами СредняяХвост списка — в начало СредняяОтсортированный список без повторов Средняя
загружаем Python…
Вход
head=list_node([7, 3, 9, 1, 4, 8])
Ожидается
[7, 9, 4, 3, 1, 8]

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