题意:
思路题解:
以往都是在一条链表上操作,本题是在两条新的链表上分别保存
class Solution {
public ListNode reverseBetween(ListNode head, int left, int right) {
//思路: 先定位到left结点之前的结点
//然后 用一个新的结点 从后开始保存left的结点 然后重新连接
ListNode dummy=new ListNode(-1,head);
ListNode pre=dummy;
for(int i=1;i<left;i++){
pre=pre.next;
}//pre到达的是 第left位置前面一个结点
ListNode leftNode=pre;
//新建一条路径 依次保持所需顺序结点
ListNode tem=new ListNode();
ListNode temPre=tem;
for(int j=0;j<=(right-left);j++){
temPre.val=pre.next.val;
pre=pre.next;
ListNode node =new ListNode();
node.next=temPre;
temPre=node;
}
leftNode.next=temPre.next;
tem.next=pre.next;
return dummy.next;
}
}