双指针:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var prev *ListNode
cur := head
for cur != nil {
tmp := cur.Next
cur.Next = prev
prev = cur
cur = tmp
}
return prev
}
递归:
func reverseList(head *ListNode) *ListNode {
return help(nil, head)
}
func help(prev, cur *ListNode) *ListNode {
if cur == nil {
return prev
}
tmp := cur.Next
cur.Next = prev
return help(cur, tmp)
}