LeetCode 82. 删除排序链表中的重复元素 II
程序员文章站
2022-05-20 19:35:17
...
/**
* 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) {
unordered_map<int,int> mp;
ListNode* cur = head;
while(cur){
mp[cur->val]++;
cur = cur->next;
}
ListNode* dump = new ListNode();
dump->next = head;
ListNode *pre = dump;
cur = head;
while(cur){
if(mp[cur->val]>1){
pre->next = cur->next;
}else{
pre = cur;
}
cur = cur->next;
}
return dump->next;
}
};
/**
* 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) {
ListNode* dump = new ListNode;
dump->next = head;
ListNode* cur = head, *pre = dump;
while(cur){
if(cur->next && cur->val == cur->next->val){
int val = cur->val;
while(cur && cur->val == val){
cur = cur->next;
}
pre->next = cur;
}else{
pre = cur;
cur = cur->next;
}
}
return dump->next;
}
};
上一篇: 【代码超详解】快速积取模 · 参考模板
推荐阅读
-
【leetcode 简单】第十八题 删除排序链表中的重复元素
-
数据结构与算法 力扣83.删除排序链表的重复元素
-
82:删除排序链表中的重复元素II
-
LeetCode 解题报告-82. 删除排序链表中的重复元素 II
-
双指针法-删除数组中的重复元素以及奇偶排序
-
LeetCode 探索 初级算法 数组 第一题:删除排序数组中的重复项
-
83.删除排序链表中的重复元素(通过)Python
-
LeetCode题解 83. 删除排序链表中的重复元素
-
LeetCode 删除排序链表中的重复元素
-
剑指offer56:删除链表中重复的结点,排序的链表中,删除重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5