反转链表

题目: https://leetcode-cn.com/problems/reverse-linked-list/

多指针

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {

var prev *ListNode
for head != nil {
// next := head.Next
// head.Next = prev
// prev = head
// head = next
head.Next, prev, head = prev, head, head.Next
}
return prev
}

递归YYDS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {


if head == nil head.Next == nil {
return head
}
curr := reverseList(head.Next)
head.Next.Next = head
head.Next = nil
return curr
}