/*
 public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}
*/
import java.util.*;
public class Solution {
    public ListNode deleteDuplication(ListNode pHead) {
        if(pHead == null){
            return pHead;
        }
        ListNode dummy = new ListNode(-1);
        dummy.next = pHead;
        HashSet<Integer> set = new HashSet<>();
        ListNode pre = dummy;
        while(pre.next != null){
            if(pre.val == pre.next.val){
                set.add(pre.val);
            }
            pre = pre.next;
        }
        pre = dummy;
        while(pre.next != null){
            if(set.contains(pre.next.val)){
                pre.next = pre.next.next;
            }else{
                pre = pre.next;
            }
        }
        return dummy.next;
    }
}