278просмотров
7.4%от подписчиков
16 марта 2026 г.
statsScore: 306
Задача: 206. Reverse Linked List
Сложность: easy Дан односвязный список, разверните этот список и верните развернутый список. Пример:
Input: head = [1,2,3,4,5]
Output: [5,4,3,2,1] 👨💻 Алгоритм: 1⃣Инициализируйте две переменные: prev как nullptr и curr как head списка. Эти переменные будут использоваться для отслеживания предыдущего и текущего узлов в процессе разворота списка. 2⃣Пройдитесь по списку с помощью цикла:
Сохраните ссылку на следующий узел curr в переменную nextTemp.
Измените ссылку next текущего узла curr на prev, чтобы развернуть направление ссылки.
Переместите prev на текущий узел curr и переместите curr на следующий узел nextTemp. 3⃣После завершения цикла верните prev как новую голову развернутого списка. 😎 Решение:
package main type ListNode struct { val int next ListNode
} func reverseList(head ListNode) ListNode { var prev ListNode = nil curr := head for curr != nil { nextTemp := curr.next curr.next = prev prev = curr curr = nextTemp } return prev
} func main() {
} Ставь 👍 и забирай 📚 Базу знаний