描述:
示例:
代码:
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead) {
if(pHead == nullptr) return pHead;
ListNode* head = new ListNode(0);
head->next = pHead;
ListNode* prev = head;
ListNode* last = head->next;
while(last != nullptr)
{
while(last->next != nullptr && last->val != last->next->val)
{
prev = prev->next;
last = last->next;
}
while(last->next != nullptr && last->val == last->next->val)
{
last = last->next;
}
if(prev->next != last) prev->next = last->next;
last = last->next;
}
return head->next;
}
};
步骤分析:
创立一个头结点head
头结点的存在只是方便删除里面的数据
定义两个指针,分别指向前面和后面
比较中间的重复的数字
然后用这两个指针进行删除