import java.util.*;
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead) {
if(pHead == null)
return null;
// 使用map字典记录list中每个元素出现的次数,以便之后将重复出现的元素删除
Map<Integer,Integer> map = new HashMap<>();
ListNode cur = pHead;
while(cur != null){
if(map.containsKey(cur.val)){
map.put(cur.val,(int)map.get(cur.val)+1);
}else{
map.put(cur.val,1);
}
cur = cur.next;
}
ListNode res = new ListNode(0);
res.next = pHead;
cur = res;
// cur最初指向虚拟头结点,方便如果头结点重复可以删除头结点
while(cur.next != null){
if(map.get(cur.next.val) != 1){
cur.next = cur.next.next;
}else{
cur = cur.next;
}
}
return res.next;
}
}