题解 | #删除有序链表中重复的元素-II#
删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 思路: 用双指针进行遍历,如果连续的两次有相同的值,用n来记住这个值,然后遍历链表将此值对应的所有的节点都删掉。第一次没有编译出来,还是参考了答案,但是答案代码一读就懂了,自己咋没想到呢,惭愧。 * * * @param head ListNode类 * @return ListNode类 */ struct ListNode* deleteDuplicates(struct ListNode* head ) { if (head == NULL) return head; struct ListNode* H = malloc(sizeof(struct ListNode)); H->next = head; struct ListNode* cur = H; while (cur->next->next != NULL && cur->next != NULL) { if (cur->next->val == cur->next->next->val) { int n = cur->next->val; while (n == cur->next->val && cur->next != NULL) { cur->next = cur->next->next; } } else { cur = cur->next; } } return H->next; }