删除排序链表中的重复元素(清晰)
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
//用哑结点处理
//别忘了处理空
if(head==nullptr||head->next==nullptr)
{
return head;
}
ListNode* ptr=new ListNode(0,head);
ListNode* hair=ptr;
while(ptr->next!=nullptr&&ptr->next->next!=nullptr)
{
//在外层控制两个后续节点指针情况真的很不错哎
while(ptr->next->val==ptr->next->next->val)
{
int val=ptr->next->val;
while(ptr->next->val==val)
{
ptr->next=ptr->next->next;
//在内层就控制出现空节点或者联系head->1->1情况真的很不错
if(ptr->next==nullptr||(ptr->next->next==nullptr&&ptr->next->val!=val))
return hair->next;
}
}
ptr=ptr->next;
}
//值得背一百遍
return hair->next;
};
};