AcWing 29. 删除链表中重复的节点
原题链接
中等
作者:
adamXu
,
2020-09-25 13:24:16
,
所有人可见
,
阅读 311
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplication(ListNode* head) {
//思路,利用双指针一个指向上一个节点的最后一个,另一个指向下下个节点,之后依据情况进行处理
//头结点dummy便于处理最后无节点的情况
auto dummy = new ListNode(-1);
dummy->next = head;
auto p = dummy;
while(p->next){
auto q = p->next;
while(q && p->next->val == q->val) q = q->next;
if(p->next->next == q) p = p->next;
else p->next = q;
}
return dummy->next;
}
};