目次
83. Remove Duplicates from Sorted List
82. Remove Duplicates from Sorted List II
1836. Remove Duplicates From an Unsorted Linked List
删除链表中的结点合集
83. Remove Duplicates from Sorted List
代码:
- /**
- * 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 == nullptr)
- return head;
- ListNode* pre = head;
- ListNode* cur = head->next;
- ListNode* nex = nullptr;
- while(cur){
- nex = cur->next;
- if(cur->val == pre->val){
- pre->next = nex;
- delete cur;
- cur = nex;
- }else{
- pre = cur;
- cur = nex;
- }
- }
- return head;
- }
- };
复制代码 82. Remove Duplicates from Sorted List II
代码:
- /**
- * 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 == nullptr)
- return head;
- ListNode* dummy = new ListNode(-1,head);
- ListNode* prepre = dummy;
- int pre_val = head->val;
- ListNode* pre = head;
- ListNode* cur = pre->next;
- ListNode* nex = nullptr;
- while(cur){
- nex = cur->next;
- if(cur->val == pre_val){
- prepre->next = nex;
- if(pre){
- delete pre;
- pre = nullptr;
- }
- delete cur;
- cur = nex;
- }else{
- if(pre){
- prepre = pre;
- }
- pre = cur;
- pre_val = pre->val;
- cur = nex;
- }
- }
- ListNode* ans = dummy->next;
- delete dummy;
- return ans;
- }
- };
复制代码
1836. Remove Duplicates From an Unsorted Linked List
代码:
- /**
- * 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* deleteDuplicatesUnsorted(ListNode* head) {
- unordered_map<int,int> count;
- ListNode* cur = head;
- while(cur){
- count[cur->val]++;
- cur = cur->next;
- }
- ListNode* dummy = new ListNode(-1,head);
- ListNode* pre = dummy;
- cur = head;
- ListNode* post = nullptr;
- while(cur){
- post = cur->next;
- if(count[cur->val] > 1){
- pre->next = post;
- // delete cur;
- cur = post;
- }else{
- pre = cur;
- cur = post;
- }
- }
- ListNode* ans = dummy->next;
- delete dummy;
- return ans;
- }
- };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|