Loading...

链表内指定区间反转

在这里插入图片描述

代码求解

reverseN函数是实现将链表的前n个节点进行反转。

和反转整个链表不同,reverseN是要让反转之后的head节点和后面的节点连接起来,而不是指向null。

因此,head.next需要指向successor。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
    ListNode successor = null;
    public ListNode reverseBetween (ListNode head, int m, int n) {
        if(m==1){
            return reverseN(head,n);
        }
        head.next=reverseBetween(head.next,m-1,n-1);
        return head;
    }
    public ListNode reverseN(ListNode head,int n){
        if(n==1){
            successor = head.next;
            return head;
        }
        ListNode last = reverseN(head.next,n-1);
        head.next.next = head;
        head.next = successor;
        return last;
    }
最后更新于 2026-04-05 17:35:33
Code Road Record