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