206.E 反转链表

Problem: 206. 反转链表arrow-up-right

思路

思路1:递归。先反转从第二个节点开始的其他节点,然后再把第一个节点放到最后。

思路2:从第二个节点开始遍历,依次把cur.next指向preHead。最后需要记得把head.next指向nil

Code

代码1:

func reverseList(head *ListNode) *ListNode {
	// 为避免空指针问题,此处应该包含head.Next == nil的情况
	if head == nil || head.Next == nil {
		return head
	}

	newHead := reverseList(head.Next)
	head.Next.Next = head
	head.Next = nil //把原头结点的next指向nil,避免成环
	return newHead
}

代码2:

Last updated