从Javascript中的排序列表中删除重复项



给定排序链表的头,删除所有重复项,使每个元素只出现一次。返回已排序的链表。

输入:头=[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]作为输出。

为什么要在let curr中使用head

原因有二:

  1. curr需要初始化为something,否则它将有一个未定义的值,使while条件始终为false,因此不会发生迭代和删除。

  2. curr旨在一个接一个地指代每个(非重复(节点,因此从第一个节点开始是有意义的,即head

而且,如果我试图在不在另一个变量中使用head的情况下做同样的事情,那么我只得到[2]作为输出。

只有当您通过return curr更改return head时,才会发生这种情况。如果这样做,则将始终返回一个不超过一个节点的列表,因为循环完成后,curr将引用列表中的最后一个节点(如果它不为空(。

为了返回列表中的所有节点,您需要始终返回其第一个节点,这就是head所代表的。

相关内容

  • 没有找到相关文章

最新更新