题解 | #删除链表中重复的结点#
删除链表中重复的结点
https://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
测试用例:{1,1,1,1,1,2,2,3,3,4,4,4,5,6,7,7,8,33,33,40}
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } }; */ class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(!pHead) return pHead; ListNode* pnode=pHead; ListNode* node=pHead->next; int flag=0; while(pnode) { while(node&&pnode->val==node->val) { flag=1; node = node->next; } if(flag) { pnode=node; if(!pnode) return nullptr; node=node->next; flag=0; } else { break; } } pHead=pnode; unordered_map<int,int> mp; mp[pnode->val] = 1; while(node) { mp[node->val]+=1; if(mp[node->val]==1) { if(node->next==nullptr||node->val!=node->next->val) { pnode->next=node; pnode = node; } } node = node->next; } pnode->next=node; return pHead; } };