Ctrl K

Разворот групп чётной длины

Средняя
Узлы односвязного списка head по порядку делятся на группы растущей длины: первый узел — группа из одного узла, следующие два — группа из двух, следующие три — из трёх и так далее. Последней группе узлов может не хватить, тогда она короче положенного. Разверните порядок узлов внутри каждой группы, в которой узлов чётное число (это касается и укороченной последней группы). Группы нечётной длины оставьте как есть. Верните голову списка.
Пример 1
head=list_node([4, 8, 1, 5, 2, 9, 6, 3]) → [4, 1, 8, 5, 2, 9, 3, 6]

Группы: [4], [8, 1], [5, 2, 9], [6, 3]. Чётной длины вторая и последняя, они разворачиваются: 4, 1, 8, 5, 2, 9, 3, 6.

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

Группы: [7], [0, 2], [5]. Последней группе не хватило узлов до трёх, в ней один узел — нечётно, её не трогаем.

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

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