从 Javascript 中的排序列表中删除重复项
Remove Duplicates from Sorted List in Javascript
给定一个排序链表的头,删除所有重复项,使每个元素只出现一次。 Return链表也排序了
输入:头= [1,1,2]
输出:[1,2]
解决方案:
let curr=head;
while(curr && curr.next){
if(curr.val===curr.next.val){
curr.next=curr.next.next;
}
else{
curr=curr.next;
}
}
return head;
我试图在 leetcode 上解决这个问题并找到了一个我无法理解一件事的解决方案,为什么我们在 let curr
中使用 head
?而且,如果我试图做同样的事情而不在另一个变量中使用 head
那么我只会得到 [2]
作为输出。
Why are we taking the head
in let curr
?
有两个原因:
curr
需要初始化为 something,否则它将有一个未定义的值,使 while
条件始终为假,所以不会有迭代,也不会发生删除。
curr
旨在一个接一个地引用每个(非重复)节点,因此从 first[=41= 开始是有意义的]节点,也就是head
.
And, If I am trying to do the same thing without taking head
in another variable then I am getting only [2] as output.
只有当您同时 将 return head
更改为 return curr
时才会发生这种情况。如果你这样做,那么你将 always return 一个不超过一个节点的列表,因为在循环完成后, curr
将引用列表中的最后一个节点(如果它不为空)。
为了 return 列表中的所有节点,您需要始终 return 它的 第一个 节点,这就是 head
代表。
给定一个排序链表的头,删除所有重复项,使每个元素只出现一次。 Return链表也排序了
输入:头= [1,1,2] 输出:[1,2]
解决方案:
let curr=head;
while(curr && curr.next){
if(curr.val===curr.next.val){
curr.next=curr.next.next;
}
else{
curr=curr.next;
}
}
return head;
我试图在 leetcode 上解决这个问题并找到了一个我无法理解一件事的解决方案,为什么我们在 let curr
中使用 head
?而且,如果我试图做同样的事情而不在另一个变量中使用 head
那么我只会得到 [2]
作为输出。
Why are we taking the
head
inlet curr
?
有两个原因:
curr
需要初始化为 something,否则它将有一个未定义的值,使while
条件始终为假,所以不会有迭代,也不会发生删除。curr
旨在一个接一个地引用每个(非重复)节点,因此从 first[=41= 开始是有意义的]节点,也就是head
.
And, If I am trying to do the same thing without taking
head
in another variable then I am getting only [2] as output.
只有当您同时 将 return head
更改为 return curr
时才会发生这种情况。如果你这样做,那么你将 always return 一个不超过一个节点的列表,因为在循环完成后, curr
将引用列表中的最后一个节点(如果它不为空)。
为了 return 列表中的所有节点,您需要始终 return 它的 第一个 节点,这就是 head
代表。