題目
定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表并輸出反轉后鏈表的頭節點。
示例:
輸入: 1->2->3->4->5->NULL
輸出: 5->4->3->2->1->NULL
限制:
0 <= 節點個數 <= 5000
解題思路
1.題目要求我們反轉該鏈表并輸出反轉后鏈表的頭節點,我們可以用遞歸來解決這個問題。
2.舉個例子:1->2->3->4->5->NULL
我們將問題拆分為head之后的元素進行反轉,也就是?reverseList(head.next),
這時我們只需要將 2.next 指向 1 ,然后讓 1.next 指向 null ,
也就是? head.next.next = head;?
?? head.next = null;
最后返回temp即可。?
代碼實現
class Solution {public ListNode reverseList(ListNode head) {if(head == null || head.next == null){return head;}ListNode temp = reverseList(head.next);head.next.next = head;head.next = null;return temp;}
}
測試結果
?