//反转区间链表
public ListNode reverseBetween(ListNode head,int m, int n){
return reverseMN(head, m, n);
}
ListNode afterNode;
public ListNode reverseProN(ListNode head,int n){
//递归出口
if (n==1){
afterNode=head.next;
return head;
}
//反转前n个元素
ListNode resNode = reverseProN(head.next, n - 1);
//头节点的下下个指针指向头节点
head.next.next=head;
//将头节点的下一个指针指向后继节点
head.next=afterNode;
return resNode;
}
public ListNode reverseMN(ListNode head,int m,int n){
//递归出口
if (m==1){
return reverseProN(head,n);
}
//反转m-n个节点
head.next=reverseMN(head.next, m-1,n-1);
return head;
}
区间反转链表
最新推荐文章于 2023-07-29 19:54:59 发布