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; }