代码
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
map<int, int> mp; // 存放结点元素个数
ListNode* p = head;
while(p){ // 遍历一遍,这样就知道重复元素
mp[p->val]++;
p = p->next;
}
// 删除满足条件的结点
ListNode* dummy = new ListNode(0, head); // 虚拟结点,方便删除操作
ListNode* prev = dummy; // 前驱结点
ListNode* cur = head; // 当前结点
ListNode* next; // 后继结点
while(cur){
next = cur->next;
if(mp[cur->val] > 1){// 删除结点操作
prev->next = next;
cur = next;
}else{
prev = cur;
cur = next;
}
}
return dummy->next;
}
};