从 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?

有两个原因:

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

  2. 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代表。