反转链表
链表
题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
限制:
0 <= 节点个数 <= 5000
注意:本题与主站 206 题相同:https://leetcode-cn.com/problems/reverse-linked-list/
Related Topics
递归
链表
👍 592
👎 0
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
}
}
思路
- 递归
- 需要三个指针,一个是当前节点,一个是上一个节点,还需要一个root节点
实现
class Solution {
public ListNode reverseList(ListNode head) {
if (head==null||head.next==null)return head;
ListNode dummyNode = new ListNode();
method(head.next,head,dummyNode);
return dummyNode.next;
}
private void method(ListNode node,ListNode pre,ListNode root){
if (node==null){
root.next=pre;
return;
}
method(node.next,node,root);
node.next=pre;
pre.next=null;
}
}
结果
解答成功:
执行耗时:0 ms,击败了100.00% 的Java用户
内存消耗:40.4 MB,击败了69.25% 的Java用户