Leetcode

链表翻转问题

TT
链表翻转相关题目 206. 翻转链表 24. 两两交换链表中的节点 92. 反转链表 II 25. K 个一组翻转链表 206. 翻转链表 所谓翻转,就是把 A -> B -> C,翻转后得到 C -> B -> A 单单讲,想要翻转一个节点,应该怎么做?首先要记录该节点的前一个节点prev,然后把当前节点head的next指针指向prev 所以说我们需要一个prev来记录要翻转的节点的前一个节点,这也是做链表题目的一个技巧,添加虚拟头指针,代码如下 // 常规解法,直接翻转 func reverseList(head *ListNode) *ListNode { var prev *ListNode for head != nil { next := head.Next // 要翻转head节点,先记录下head.Next,以免丢失 head.Next = prev // 翻转head,即是把head.Next 指向它的前一个节点prev prev = head // prev 向后挪一个位置 head = next // head 向后挪一个位置 } return prev } 使用golang的语法糖,可以简写如下 func reverseList(head *ListNode) *ListNode { var prev *ListNode for head !