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两个针进行穿针引线
}
};
京公网安备 11010502036488号