【问题标题】:Remove Duplicates from Sorted List in Javascript从 Javascript 中的排序列表中删除重复项
【发布时间】:2021-12-31 18:58:39
【问题描述】:

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

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

【问题讨论】:

    标签: javascript loops linked-list singly-linked-list let


    【解决方案1】:

    我们为什么要在let curr 中使用head

    有两个原因:

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

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

    而且,如果我尝试做同样的事情而不将 head 放入另一个变量中,那么我只会得到 [2] 作为输出。

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

    为了返回一个列表中的所有节点,你需要总是返回它的first节点,这就是head所代表的。

    【讨论】:

    • 哦,我明白了。非常感谢您的帮助。
    猜你喜欢
    • 2021-07-24
    • 2021-02-25
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 2021-04-02
    • 2016-01-28
    相关资源
    最近更新 更多