/*
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。
*/
前置知识: lc0206 反转链表
Lc0092这题的的思路和206题的反转链表一样,难在操作。
先贴代码
拿上示例,来看图解
1、首先是拼接上dummy,最终返回dummy.next。(这是常规操作)
2、第一个for循环,让temp从dummy位置出发,移动到left位置的上一个节点
注意,此后temp的位置没有移动,temp很长一段时间内指向也没有变(1 -> 2)。
3、第二个for循环,操作prev和cur,一边移动位置,一边反转节点指向。
其中指向改变了(right - left)次,第二个for循环终点时prev处于right位置,cur处于right.next位置。
第二个for循环完成之后链表中各个节点的指向是下面这样的
4、重新画一下图,看一下现在的链表指向
5、temp.next.next = cur
6、temp.next = prev
已经反转完成了
返回dummy.next,完结。
同步更新到自己的语雀
https://www.yuque.com/dirackeeko/tfpe21/fsp29dvd4k9yvvpi
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。