题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ struct ListNode* deleteDuplicates(struct ListNode* head ) { // write code here if(head==NULL||head->next==NULL){ return head; } struct ListNode *p=head,*q=head->next,*s=(struct ListNode*)malloc(sizeof(struct ListNode)),*s1=s; while(q){ if(p->val==q->val){ while (p->val==q->val) {//p->val!=q->val时,跳出 p=p->next; q=q->next; if(!q){//若q为空 s1->next=NULL; return s->next; } } //从新的开始 }else { s1->next=p;//将单一元素链成新表 s1=s1->next; } p=q; q=q->next;//节点移动 } s1->next=p; p->next=NULL; return s->next; }