LeetCode 206. Reverse Linked List (倒转链表)
Reverse a singly linked list.
题目标签:Linked List
题目给了我们一个链表,要求我们倒转链表。
利用递归,新设一个newHead = null,每一轮 把下一个 node 存入 next 记住,把目前的点 cursor 连到 newHead;
然后把 next 当作新的 cursor;把 cursor 当作新的 newHead 递归下去。
换句话说,每到一个点,把下一个点(右边的)记住,传到下一轮,然后把目前的点反向链接(向左链接)。
Java Solution:
Runtime beats 22.53%
完成日期:06/11/2017
关键词:singly-linked list
关键点:递归向左链接;记住右边的点代入下一轮
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { val = x; } 7 * } 8 */ 9 class Solution 10 { 11 public ListNode reverseList(ListNode head) 12 { 13 return dfs(head, null); 14 } 15 16 private ListNode dfs(ListNode cursor, ListNode newHead) 17 { 18 if(cursor == null) 19 return newHead; 20 21 ListNode next = cursor.next; 22 cursor.next = newHead; 23 24 return dfs(next, cursor); 25 } 26 }
参考资料:N/A
LeetCode 题目列表 - LeetCode Questions List
题目来源:https://leetcode.com/