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