其他分享
首页 > 其他分享> > 92. 反转链表 II

92. 反转链表 II

作者:互联网

题目

给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

在这里插入图片描述

代码

package LeetCode92;

 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 {
    ListNode nextnode=null;//后继结点声名
    public ListNode reverseBetween(ListNode head, int left, int right) {


//        逆转前N个结点方法
        if (left==1){
          return reverseN(head,right);
        }
        head.next=reverseBetween(head.next,left-1,right-1);//向前递归,并改变next结点

        return head;//最终输出的第一次调用的head,也就是说链表的第一个结点
    }
    ListNode reverseN(ListNode head,int n){//翻转前n个结点

        if (n==1){
             nextnode= head.next;//获取翻转部分的下一个结点
             return  head;//返回要反转的最后一个结点
        }
//  递归翻转
        ListNode last =reverseN(head.next,n-1);

//        翻转操作
        head.next.next=head;
        head.next=nextnode;
        return last;//返回翻转最后结点


    }


}

方法

标签:II,head,ListNode,val,int,结点,next,链表,92
来源: https://blog.csdn.net/weixin_43871309/article/details/121193582