Menu
CoddyTech

Reverse Linked List

Дан односвязный список, хранящийся в массиве next: узел i ссылается на узел next[i], -1 обозначает конец списка, а голова — это узел 0. Узлы хранятся не в порядке списка, поэтому следуйте по ссылкам.

Разверните список, изменив направление каждой ссылки так, чтобы прежний последний узел стал головой, а узел 0 стал последним и ссылался на -1. Верните обновлённый массив next, длина которого совпадает с длиной входного массива.

Функция

reverseList(next: integer-array) → integer-array
nextinteger-array
индекс узла, на который ссылается каждый узел, или -1 для последнего узла
Возвращаетinteger-array
следующий массив перевёрнутого списка

Ограничения

  • 1 ≤ next.length ≤ 5000
  • Каждый next[i] — это -1 или индекс узла от 0 до next.length-1.
  • Начиная с узла 0, список посещает каждый узел ровно один раз, а затем достигает -1. Цикла нет.

Примеры

Ввод
next = [1, 2, 3, -1]
Вывод
[-1, 0, 1, 2]
Пояснение
Список имеет вид 0 → 1 → 2 → 3. В обратном порядке это 3 → 2 → 1 → 0, поэтому узел 3 связан с 2, узел 2 — с 1, узел 1 — с 0, а узел 0 — с -1.

lock icon+11 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Можешь развернуть только часть списка между позицией left и позицией right, оставив узлы до и после неё на своих местах?

Сбросить код
def reverseList(next):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Случай 3

Ввод

next = [1, 2, 3, -1]

Ожидается

[-1, 0, 1, 2]