https://leetcode.cn/problems/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 0;
}
ListNode *p = head;
while(p->next != nullptr)
{
if(p->val == p->next->val)
{
ListNode *q = p->next;
p->next = q->next;
delete(q);
}
else // 这里一定要加一个else,在else里面判断
// 因为当出现连续3个及以上的连续数字时,必须在原有基础上继续判断,而不能直接跳!
// 直到当前这个位置删除到下一个位置的元素跟当前元素不同的时候,才能跳到下一个
{
p = p->next;
}
}
return head;
}
};
tql