82 Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving onlydistinctnumbers from the original list.

For example, Given1->2->3->3->4->4->5, return1->2->5. Given1->1->1->2->3, return2->3.

public ListNode deleteDuplicates(ListNode head) {
    if (head == null || head.next == null) {
        return head;
    }

    ListNode dummy = new ListNode(-1);
    dummy.next = head;
    ListNode pre = dummy;

    while (pre.next != null) {
        ListNode cur = pre.next;
        while (cur.next != null && cur.val == cur.next.val) {
            cur = cur.next;
        }

        if (pre.next != cur) {
            pre.next = cur.next;
        } else {
            pre = pre.next;
        }
    }

    return dummy.next;
}

Last updated