Remove Duplicates from Sorted List II
#include "iostream"
using namespace std;
/**Definition for singly-linked list.*/
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head) {
if (head==NULL||head->next==NULL) {
return head;
}
ListNode *res =new ListNode(0);
res->next=head;//删除后
ListNode *q=res;
ListNode *p=head;//待处理
ListNode *tmp=p;
int number=0;
while (p!=NULL) {
while (p!=NULL&&p->val==tmp->val) {
number++;
p=p->next;
}
if (number==1) {
q=q->next;
}
q->next=p;
number=0;
tmp=p;
}
q=res->next;
res->next=NULL;
delete res;
return q;
}
};
int main() {
ListNode *t=new ListNode(1);
t->next=new ListNode(2);
//t->next->next=new ListNode(2);
cout<<t->val<<endl;
Solution so;
ListNode *res= so.deleteDuplicates(t);
cout<<res->val<<res->next->val<<endl;
return 0;
}