题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* ListNode(int x) : val(x), next(nullptr) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
auto slow = head, fast = head;
ListNode* newlist = nullptr;
ListNode* curr = nullptr;
while (fast) {
int cnt = 0;
while (fast && fast->val == slow->val) {
cnt++;
fast = fast->next;
}
cout << cnt << endl;
if (cnt == 1) {
if (newlist == nullptr) {
newlist = slow;
curr = slow;
} else {
curr->next = slow;
curr = curr->next;
}
}
slow->next = fast;
slow = slow->next;
}
if (curr == nullptr) return nullptr;
else {
curr->next = nullptr;
return newlist;
}
}
};
查看4道真题和解析