LeetCode 题解:61. 旋转链表,双指针,JavaScript,详细注释
原题链接:61. 旋转链表
解题思路:
输入:
head = [1,2,3,4,5], k = 2
。如果将链表连接成环,会变成这样的样子:
[1,2,3,4,5,1,2,3,4,5, ...]
。此时我们只要将
3 → 4
的连接打断,即可得到结果:[4,5,1,2,3]
。可以把问题按步骤解决:
创建两个指针,
slow = 1, fast = 1
。将
fast
向前移动2
位,指向3
。再将
slow
和fast
同时向前移动,知道fast
指向尾结点,此时slow
正好停留在链表要断点的位置。将
fast
与head
连接,让链表形成环。缓存新链表的头结点
const newHead = slow.next
,将链表打断slow.next = null
将新链表的头结点
newHead
返回。
复制代码
版权声明: 本文为 InfoQ 作者【Lee Chen】的原创文章。
原文链接:【http://xie.infoq.cn/article/ba547fac1df2acfde760e5abc】。文章转载请联系作者。
评论