解题思路
计数,之后再遍历一次,将次数为1的加入新链表中,最后返回结果。
代码
#include<map>
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if(head == NULL)
return NULL;
ListNode *p = head;
map<int,int>m;
while(p){
if(m.find(p->val) == m.end())
m[p->val] = 1;
else
m[p->val]++;
p = p->next;
}
ListNode *first = new ListNode(0);
ListNode *tail = first;
p = head;
while(p){
if(m[p->val] == 1){
ListNode *tmp = p->next;
p->next = NULL;
tail->next = p;
tail = tail->next;
p = tmp;
}
else
p = p->next;
}
return first->next;
}
};