题解 | #删除链表中重复的结点#
删除链表中重复的结点
http://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef
重复节点删除
方法一:哈希表记录遍历一次,再遍历一次删除重复元素
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead) {
unordered_map<int,int> m;
ListNode* head = new ListNode(-1);
head->next = pHead;
while(pHead){
++m[pHead->val];
pHead = pHead->next;
}
pHead = head;
while(pHead->next){
if(m[pHead->next->val]>1){
ListNode* tmp = pHead->next;
pHead->next = pHead->next->next;
delete tmp;
}else{
pHead = pHead->next;
}
}
return head->next;
}
};