【发布时间】:2022-01-09 07:11:09
【问题描述】:
我无法完全理解 Leetcode 上第 19 题的解决方案。
所以当我们创建快速和慢速 - 我们创建了头部链接?我可以判断是的。但是然后我们快速迭代 - 为什么它不改变头部?我的意思是在我们用 fast.next 替换 fast 的每一步?所以不知何故它不会影响头部和缓慢。
然后我们将 slow.next 替换为 slow.next.next,它确实会影响 head。
您能否描述一下它如何在第一部分不替换任何内容并在第二部分替换。
var removeNthFromEnd = function(head, n) {
let fast = head, slow = head
for (let i = 0; i < n; i++) fast = fast.next // why it doesn’t change head and slow?
if (!fast) return head.next
while (fast.next) fast = fast.next, slow = slow.next
slow.next = slow.next.next // why it change head?
return head
};
【问题讨论】:
-
如果只分配给
fast,为什么会影响head和slow?它们是不同的变量。 -
下面的答案为我解决了这个问题。之前没看懂。
标签: javascript algorithm linked-list singly-linked-list