利用map的特性,将第一次遇到的值装入map中,同时更新链表
若是键值的值大于0,则跳过当前节点,
最后记得要在遍历完链表后将新链表的末尾置为NULL,
即list->next=NULL
链表的题目都值得注意的就是地址不要弄串了,每次都应该多申请一个地址来记录原本的头节点,最后直接返回pre->next
/**
- Definition for singly-linked list.
- struct ListNode {
-
int val;shen
-
ListNode *next;
-
ListNode(int x) : val(x), next(NULL) {}
- };
/
class Solution {
public:
ListNode removeDuplicateNodes(ListNode* head)
{
map<int,int>cc;
ListNode* pre=new ListNode(NULL);
ListNode* list=pre;
while(head!=NULL)
{
if(cc[head->val]==0)
{
cc[head->val]++;
list->next=head;
list=list->next;
head=head->next;
}
else
{
head=head->next;
}
}
list->next=NULL;
return pre->next;
}
};