这道题题意很简单,但是容易出错,特别是第一个Node需要删掉的情况,所以可以使用一个dumyNode来做,简单而且不容易出错。
ListNode* deleteDuplicates(ListNode* head) {
if (!head || !head->next) return head;
ListNode *dummy = new ListNode(0);
dummy->next = head;
head = dummy;
while(head->next && head -> next -> next) {
if(head->next->val == head->next->next->val) {
int val = head->next->val;
while(head->next && head->next->val == val) {
head->next = head->next->next;
}
} else {
head = head->next;
}
}
return dummy->next;
}

本文介绍了一种使用虚拟头节点简化链表中重复节点删除过程的方法。通过创建一个虚拟头节点,可以有效避免处理首节点特殊情况,使代码更简洁且不易出错。适用于需要去除有序链表中所有重复元素的场景。

689





