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/

posted @ 2017-11-30 08:09  Jimmy_Cheng  阅读(169)  评论(0编辑  收藏  举报