---
round: 1
ticket_no: 7
source_no: 21
slug: reverse-linked-list
topic: Linked Lists
difficulty: Easy
leetcode_id: 206
attempted: true
score: 2
verdict: partial
reviewed_at: 2026-09-12
---

# Билет 07 — Reverse Linked List

## Условие (как предъявлено)

Дан односвязный список. Нужно развернуть его и вернуть новую голову. Follow-up: решить рекурсивно.

```
Input:  head = [1,2,3,4,5]  →  [5,4,3,2,1]
```

## Ответ

> Здесь идея такая. Мы проходимся по этому списку и по ходу переворачиваем связи в обратную сторону. То есть мы от первого элемента получили второй элемент. Значит, у первого связь удалили. Теперь взяли у второго элемента третий элемент и его перенаправили на первый элемент. И перешли к следующему. То есть дальше у третьего спросили: у тебя что следующий? Спросили. Направили его на двойку. И пошли дальше. Так пока не уперлись в конец. Ну и в конце последний элемент направили начало. Вот. Ну и последний элемент мы возвращаем как раз как голову.

## Разбор

**Что верно:** один проход по списку с переворотом ссылок next и возвратом последнего узла как новой головы — верно, «ползунок» сохранён (не потеряли хвост).

**Что упущено и ошибки:** не названа тройка prev / curr / next явно и правило «сохранить next до перезаписи»; не названа сложность; граничные случаи: пустой список, один узел; рекурсивный follow-up и риск переполнения стека на длинном списке.

**Эталонная идея:** prev = nil, curr = head; пока curr: nxt = curr.next; curr.next = prev; prev = curr; curr = nxt; вернуть prev.

**Сложность:** время O(n), память O(1)

**Критерии:** идея ✅ · структура данных ✅ · сложность ❌ · граничные случаи ⚠️


**Разбор задачи:** [`../../algo-solutions/02-extra/01-linked-lists/21-reverse-linked-list.md`](../../algo-solutions/02-extra/01-linked-lists/21-reverse-linked-list.md)
