给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5 输出: 1->2->5
示例 2:
输入: 1->1->1->2->3 输出: 2->3
思路:直接写就好了。。。
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(!head) return nullptr; ListNode *dummy=new ListNode(0),*pre=dummy, *p=head, *q=p->next; dummy->next=head; while(p && q){ if(p->val==q->val){ while(q && p->val==q->val){//删除后面重复的元素 p->next=q->next; q=q->next; } pre->next=q;//删除第一个重复的元素 p=q; if(q) q=q->next; } else{//如果没遇到重复元素,直接往后面找 pre=p; p=q; q=q->next; } } return dummy->next; } };