leetcode-83- 删除排序链表中的重复元素

128 阅读1分钟

image.png leetcode原题

解题思路

  • 因为链表已经是经过升序排列的,所以我们只需要比较当前元素和下一个元素的值的大小;

  • 如果当前元素的值等于下一个元素的值,那么删除下一个元素, 在链表中的操作就直接将当前节点的下一个节点, 执行下下个节点;

  • 如果值不相等,则将当前指针换后移一个元素,判断下一个元素是否重合,直到结束;

  • 为了返回链表的头指针,一开始我们要找个人带跑,保留头指针所在的位置。

var deleteDuplicates = function(head) {
    // 找人代跑,保留头指针的位置
    let cur = head;

    // 结束条件, 没有下一个节点就不用比较了
    while (cur && cur.next) {
        // 如果值相同,删除下个节点
        if (cur.val === cur.next.val) {
            // 这一步相当于删除下一个节点
            cur.next = cur.next.next;
        } else {
            // 比对下一个元素和下下个元素
            cur = cur.next;
        }
    }

    return head;
};