LintCode : 删除链表中的重复元素
题目
给定一个排序链表,删除所有重复的元素每个元素只留下一个。
样例
给出 1->1->2->null,返回 1->2->null
给出 1->1->2->3->3->null,返回 1->2->3->null
思路
感觉没什么好说的嘛,,就是遇到之前见过的就删掉就好了。。
代码
ListNode *deleteDuplicates(ListNode *head)
{
if(head == NULL)
return NULL;
map <int, int> dict;
ListNode *p = head;
ListNode *q = head->next;
dict[head->val] = 1;
while(q != NULL)
{
if(dict.find(q->val) != dict.end())
{
p->next = q->next;
free(q);
q = p->next;
}
else
{
dict[q->val] = 1;
p = p->next;
q = p->next;
}
}
return head;
}