题解 | #删除有序链表中重复的元素-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 int delData = 0; struct ListNode* dummy = malloc(sizeof(struct ListNode)); struct ListNode* delTemp; struct ListNode* temp = head; struct ListNode* pPre = dummy; dummy->next = head; while(temp && temp->next) { if (temp->val != temp->next->val) { temp = temp->next; pPre = pPre->next; } else { delData = temp->val; while(temp && temp->val == delData) { delTemp = temp; temp = temp->next; pPre->next = temp; free(delTemp); } }; } return dummy->next; }
虚拟头节点,防止原先头节点被删除。