Лента сортировочного центра описана односвязным списком: val узла — номер посылки, узел со значением 0 — разделитель партий.
Партии грузили в машину задом наперёд, поэтому порядок внутри каждой партии нужно развернуть. Разделители остаются на своих местах, порядок партий не меняется.
Переставляйте ссылки next у существующих узлов, новые узлы не создавайте. Верните голову списка.
В работе: Выгрузка на ПВЗ Wildberries: машина пришла, партии внутри перевёрнуты, а сканер ждёт исходный порядок.
Пример 1
head = [3, 1, 2, 0, 5, 4, 0, 0, 7]
[2, 1, 3, 0, 4, 5, 0, 0, 7]
Партии 3 1 2, 5 4, пустая, 7 → 2 1 3, 4 5, пустая, 7.
Пример 2
head = [0, 8, 9]
[0, 9, 8]
Разделитель в начале, за ним одна партия.
Ограничения
- 0 ≤ длина списка ≤ 10⁵ (в JavaScript — до 10⁶)
- 0 ≤
val≤ 10⁶ - Рекурсия на 10⁵ узлов упрётся в предел глубины Python
- Лимит — 2 с на тест (1500 мс).
print() и console.log() уходят в консоль. Класс ListNode уже объявлен: у узла есть поля val и next. Пустой список — None (в JS — null).
def reverse_batches(head):
Источник: наша задача на данных Wildberries. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.