题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ #include <stdlib.h> struct ListNode* deleteDuplicates(struct ListNode* head ) { // write code here struct ListNode* p1; struct ListNode* p2; struct ListNode* L =(struct ListNode*)malloc(sizeof(struct ListNode));//定义一个空节点 L->next = head; p1 = head; p2 = L; while ( p1->next != NULL&& p1 !=NULL)//注意这里,不然会发生段错误 { if (p1->val == p1->next->val) { while (p1->next->val == p1->next->next->val&&p1->next->next !=NULL)//如果连续重复 { p1 = p1->next;//不断遍历 } if(p1->next == NULL)//遍历完都是空了,则提前返回 { return L->next; } p1 = p1->next->next;//指向下下个节点 p2->next=p1; }else { p2 = p1;//保留前一个节点 p1 = p1->next; } } return L->next; }