leetcode 82. 删除排序链表中的重复元素 II

25 阅读1分钟
/**

 * 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) {

        ListNode* dummy = new ListNode(0, head);

        ListNode* prev = dummy;

        ListNode* curr = head;

        while(curr && curr->next) {

            if(curr->val == curr->next->val) {

                int x = curr->val;

                while(curr && curr->val == x) {

                    curr = curr->next;

                }

                prev->next = curr;

            }

            else {

                prev = curr;

                curr = curr->next;

            }

        }

        return dummy->next;

    }

};