题目:
代码(首刷看解析 2024年4月10日):
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* dummyHead = new ListNode(0, head), *cur = dummyHead;
while (cur->next && cur->next->next) {
int val = cur->next->val;
if (cur->next->next->val == val) {
while (cur->next && cur->next->val == val) {
cur->next = cur->next->next;
}
} else {
cur = cur->next;
}
}
return dummyHead->next;
}
};
代码(二刷自解 2024年8月10日)
莫名其妙就做出来了,虽然代码很丑
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
// 两个指针,一个放在队头,一个往后找,直到遇到不重复的,队头->队尾;更新
if (!head || !head->next) return head;
ListNode* dummyHead = new ListNode(0, head);
auto left = dummyHead;
auto right = head;
bool flag = false;
while (left && right) {
while (right->next && right->val == right->next->val) {
auto tmp = right;
right = right->next;
left->next = right;
delete tmp;
flag = true;
}
if (flag) {
auto tmp = right;
right = right->next;
left->next = right;
delete tmp;
flag = false;
} else {
left = right;
right = right->next;
}
}
return dummyHead->next;
}
};