题目传送门
题解
- 注意重复的结点一个也不保留
- 因为第一个结点也可能是重复的,所以预先创建一个头,方便代码书写,更美观。
AC-Code
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead) {
if(!pHead) return NULL;
ListNode* rHead = new ListNode(-1);
rHead->next = pHead;
ListNode* pre = rHead;
ListNode* now = pHead;
while(now) {
if(now->next && now->next->val == now->val) {
ListNode* pnxt = now->next;
while(pnxt && pnxt->val == now->val)
pnxt = pnxt->next;
pre->next = pnxt;
now = pnxt;
}
else {
pre = now;
now = now->next;
}
}
return rHead->next;
}
};