Remove Duplicates from Sorted List II

来源:互联网 发布:java process 编辑:程序博客网 时间:2024/06/05 16:32

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

/** * 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) return head;        ListNode *p1 = head;        ListNode *newHead = new ListNode(0);        ListNode *p2 = newHead;        while(p1 != NULL)        {            ListNode *temp = p1;            while(p1->next!=NULL&&p1->val == p1->next->val)                p1 = p1->next;            if(temp == p1)            {                p2->next = temp;                p2 = p2->next;            }            p1 = p1->next;        }        p2->next = NULL;        return newHead->next;    }};


0 0