LeetCode 83. 删除链表中的重复元素(保留一个)
原题链接
简单
作者:
大明湖的鱼
,
2021-03-26 10:42:14
,
所有人可见
,
阅读 395
要用到两个指针遍历,一个是cur遍历老链表,一个是p用来做结果链表不断往里添加。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(!head || !head->next) return head;
ListNode* dumpy = new ListNode(-1);
ListNode* cur = head;
dumpy->next = head;
ListNode* p = dumpy;
map<int,int> mp;
while(cur){
if(mp[cur->val] == 0){
mp[cur->val] = 1;
p->next = new ListNode(cur->val);//这里不能写成p->next = cur ;
p = p->next;
}
cur = cur->next;
}
return dumpy->next;
}
};