class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(!pHead) return pHead; struct ListNode *pre=(struct ListNode *)malloc(sizeof(struct ListNode)); pre->next=pHead; ListNode *p1=pre; ListNode *p2=pre->next; while(p2&&p2->next) { if(p2->val==p2->next->val) { p2=p2->next; while(p2->next&&p2->val==p2->next->val) { p2=p2->next; } p1->next=p2->next; p2=p2->next; } else { p1=p1->next; p2=p2->next; } } return pre->next; } };
要注意判断指针是否存在,以及大于2个以上的连续结点重复的情况。
时间: 2024-11-15 22:55:12