算法列表

82. 删除排序链表中的重复元素 II 中等

布莱克2026-02-06 16:33链表

问题:

给定一个已排序的链表的头 head删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表

示例 1:

输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]

示例 2:

输入:head = [1,1,1,2,3]
输出:[2,3]

回答:

可类比leetcode第83.删除排序链表中的重复元素,不过这道题相对来说复杂些

建立虚拟头节点,因为有可能头节点会被删除

var deleteDuplicates = function(head) {
    let dummy = new ListNode();
    dummy.next = head;
    let current = dummy;
    while (current.next && current.next.next) {
        if (current.next.val == current.next.next.val) {
            let value = current.next.val;
            while (current.next && current.next.val == value) {
                current.next = current.next.next;
            }
        } else {
            current = current.next;
        }
    }
    return dummy.next;
};


assistant