LeetCode (Remove Duplicates from Sorted List II)

来源:互联网 发布:淘宝卖家店铺出租 编辑:程序博客网 时间:2024/06/05 10:15

Problem;

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.

Solution:

/** * 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 || !head->next) return head;        ListNode l(0), *p = &l;        ListNode *pre = head, *cur = head->next;        if(pre->val != cur->val){            p->next = pre;            p = p->next;        }        while(cur){            if(pre->val != cur->val && (!cur->next || cur->val != cur->next->val)){                p->next = cur;                p = p->next;            }            pre = cur;            cur = cur->next;        }        p->next = NULL;        return l.next;    }};


原创粉丝点击