难度:中等
题目描述:
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现
的数字。返回同样按升序排列的结果链表。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head==nullptr||head->next==nullptr){
return head;
}
ListNode *ans=new ListNode(-1);
ans->next=head;
ListNode *p=ans;
while(p->next&&p->next->next){
if(p->next->val==p->next->next->val){
int tmp=p->next->val;
while(p->next&&p->next->val==tmp){
p->next=p->next->next;
}
}else{
p=p->next;
}
}
return ans->next;
}
};