1.删除排序链表中的重复元素II
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字
思路:快慢指针
ListNode* deleteDuplicates(ListNode* head) {
ListNode* res = new ListNode(0);
ListNode* prev = res;
prev -> next = head;
ListNode* slow = nullptr;
ListNode* fast = nullptr;
if(head == nullptr || head -> next == nullptr)
{
return head;
}
slow = head;
fast = head -> next;
while(fast != nullptr)
{
if(slow -> val != fast -> val)
{
prev = slow;
slow = slow -> next;
fast = fast -> next;
}
else
{
while(fast)
{
if(slow -> val == fast -> val)
{
fast = fast -> next;
}
else
{
break;
}
}
prev -> next = fast;
slow = fast;
if(fast)
{
fast = fast -> next;
}
}
}
return res -> next;
}