题目
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d72ea2dd72417f0ca19e266662730144.png)
思路
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/d2fb5fa126b46e26d75f5d6dc981c037.png)
- 比K个一组翻转链表简单多了…
- 以上情况未考虑left从头开始转的情形,只在代码里有表现
代码
public static ListNode reverseBetween(ListNode head, int left, int right) {
if(left==right) return head;
int local=1;
ListNode start = head;
ListNode pre=null;
while(local!=left){
pre=start;
start = start.next;
local++;
}
ListNode pre_pre = pre;
ListNode pre_start=start;
if(pre!=null) pre = pre.next;
else pre=start;
start = start.next;
local++;
while(local!=right+1){
ListNode temp = start.next;
start.next=pre;
pre=start;
start=temp;
local++;
}
pre_start.next=start;
if(pre_pre!=null){
pre_pre.next=pre;
return head;
}
else{
return pre;
}
}