前文关于反转链表的解析https://blog.csdn.net/weixin_46028606/article/details/145592860?fromshare=blogdetail&sharetype=blogdetail&sharerId=145592860&sharerefer=PC&sharesource=weixin_46028606&sharefrom=from_link
翻转链表II
代码一定要结合下面的图片一起去理解,尤其是最后两行代码
p0.next.next = cur;
p0.next = pre;
class Solution {
public ListNode reverseBetween(ListNode head, int left, int right) {
ListNode dummy = new ListNode(0,head);
ListNode p0 = dummy;
for(int i = 0; i < left - 1; ++i){
p0 = p0.next;
}
ListNode pre = null , cur = p0.next , nxt = null;
for(int i = 0; i < right - left + 1; ++i){
nxt = cur.next;
cur.next = pre;
pre = cur;
cur = nxt;
}
p0.next.next = cur;
p0.next = pre;
return dummy.next;
}
}
参考的视频链接
【反转链表【基础算法精讲 06】】 https://www.bilibili.com/video/BV1sd4y1x7KN/?share_source=copy_web&vd_source=afbacdc02063c57e7a2ef256a4db9d2a