0
点赞
收藏
分享

微信扫一扫

双指针法 | |递归解决反转链表

RIOChing 2022-05-02 阅读 95

在这里插入图片描述
https://leetcode-cn.com/problems/reverse-linked-list/
代码随想录的思路,这里只用于记录自己的练习过程。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    /*递归解法*/
    public ListNode reverseList(ListNode head) {
        return reverse(null, head); 
    }
    public ListNode reverse(ListNode pre, ListNode cur) {
        if (cur == null) {
            return pre; 
        }
        ListNode temp = cur.next; 
        cur.next = pre; 
        return reverse(cur, temp); 
    }
}
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    /*使用双指针 */
    public ListNode reverseList(ListNode head) {
        ListNode pre = null; 
        ListNode cur = head; 
        while (cur != null) {
              ListNode temp = cur.next; 
              cur.next = pre; 
              pre = cur; 
              cur = temp; 
        }
        return pre; 
    }
}

思路来自https://programmercarl.com/0206.翻转链表.html#其他语言版本

举报

相关推荐

0 条评论