本文最后更新于 1152 天前,其中的信息可能已经有所发展或是发生改变。
思路
基础的递归思维,再一次用到了虚拟头结点。
题目
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
提示:
- 链表中节点的数目范围是
[0, 5000]
-5000 <= Node.val <= 5000
进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
Related Topics
代码
public ListNode reverseList(ListNode head) {
if (head == null) {
return null;
}
ListNode curr = head;
// 虚拟头结点
ListNode pre = null;
do {
ListNode next = curr.next;
curr.next = pre;
pre = curr;
curr = next;
} while (curr != null);
return pre;
}