LeetCode 题解:92. 反转链表 II,迭代,JavaScript,详细注释
原题链接:https://leetcode-cn.com/problems/reverse-linked-list-ii/
解题思路:
参考了官方题解中的
方法二: 迭代链接反转
,你可以其中的图片理解。如果你对反转链表不熟悉,可以先尝试206. 反转链表。
使用prev和curr指针进行链表反转,先将两个指针移动到m-1和m位置。
在进行反转的时候,链表会被分成三段,第一段和第三段不变,中间的第二段被反转。
链表完成反转之后,m-1节点即为第一段链表的尾结点。原来的m节点从第二段的头结点,变成了第二段链表的尾结点。curr指针会移动到第三段链表的头结点,如果第三段链表不存在,curr就为
null
。最后将三段链表连接起来即可。需要注意的是,如果m为1,也就是第一段链表不存在的时候,链表的头结点其实已经变成了第二段链表的头结点,因此需要重新设置一次头结点。
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/f5db6e4a84aef1339e4582d40】。文章转载请联系作者。
评论