82. Remove Duplicates from Sorted List II
一串列表删除所有相邻的重复元素
Example 1:
Input: 1->2->3->3->4->4->5
Output: 1->2->5
Example 2:
Input: 1->1->1->2->3
Output: 2->3
思路就是可以在前方放一个前置结点,然后向后遍历,找到一段相邻的重复的结点,然后删除这段即可
class Solution { public: ListNode* deleteDuplicates(ListNode* head) { if(head==NULL){return head;} ListNode *first, *a, *b, *c, *temp; first = new ListNode(-1); a = first; first->next = head; b=a->next; while(b!=NULL){ c=b->next; //c是空的 if(c==NULL){ return first->next; } //b这个结点值是独一无二的 if(c->val!=b->val){ a=b; b=c; }else{ //将c的位置放在和b值相同的最后一个结点上 while(c->next!=NULL && c->next->val==c->val){ c=c->next; } b=c->next; //用来删除重复结点的 // c=a->next; // while(c!=b){ // temp =c; // c = c->next; // delete temp; // } a->next = b; } } return first->next; } };