CCCPaste

ec81a5d712e03

public static SinglyLinkedListNode condense(SinglyLinkedListNode head) {
    if (head == null) return null;

    HashSet seen = new HashSet<>();
    SinglyLinkedListNode curr = head;
    SinglyLinkedListNode prev = null;

    while (curr != null) {
        if (seen.contains(curr.data)) {
            // Duplicate → remove the node
            prev.next = curr.next;
        } else {
            // First time seeing this value
            seen.add(curr.data);
            prev = curr;
        }
        curr = curr.next;
    }

    return head;
}