C++/代码:
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { auto dummy = new ListNode(-1);//初始化一个节点值为-1的空节点 dummy->next = pHead; //建立头节点(表头) auto p = dummy; //用两个指针,一个表示每一段的头,一个表示每一段的尾 while(p->next){ //若不为空,则进行循环 auto q = p->next; //p表示每一段的头部,q表示每一段的尾部 while(q && p->next->val == q->val) q = q->next; //下一个指针不可为空 if (p->next->next == q) p = p->next; //若这一段为1,则进行左移,写一个循环 else p->next= q; //否则删除该片段 } return dummy->next; //p,q相当于针一样,大框架不变,靠p,q两个针进行穿针引线 } };