class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) {
        if(!pHead)return NULL;//判断是否为空链表
        set<int>arr;
        ListNode* p1=pHead;
        ListNode* p2=pHead->next;
        while(p2){//定义双指针,把重复的值加入set中
            if(p1->val==p2->val){
                arr.insert(p1->val);
            }
            p1=p1->next;
            p2=p2->next;
        }
        ListNode* newlist=new ListNode(-1);
        p1=newlist;
        newlist->next=pHead;
        p2=pHead;
        while(p2){
            if(arr.find(p2->val)!=arr.end()){//如果有重复的值
                p1->next=p2->next;//删除结点,后面补上
                p2=p2->next;//指针p2接着往后面走
            }
            else{//没有重复,两个指针都往后面走
                p1=p1->next;
                p2=p2->next;
            }
        }
        return newlist->next;
    }
};