您的位置:首页 > 其它

删除排序链表中重复元素

2015-10-10 13:20 477 查看
给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。

样例

给出1->2->3->3->4->4->5->null,返回1->2->5->null
给出1->1->1->2->3->null,返回 2->3->null

/**
 * Definition of ListNode
 * class ListNode {
 * public:
 *     int val;
 *     ListNode *next;
 *     ListNode(int val) {
 *         this->val = val;
 *         this->next = NULL;
 *     }
 * }
 */
class Solution{
public:
    /**
     * @param head: The first node of linked list.
     * @return: head node
     */
    ListNode * deleteDuplicates(ListNode *head) {
        // write your code here
        if(head==NULL||head->next==NULL) return head;
        ListNode *dummy=new ListNode(-1);
        dummy->next=head;
        ListNode *pre=dummy;
        ListNode *cur=head->next;
        while(cur){
            while(cur&&pre->next->val!=cur->val){
                pre=pre->next;
                cur=cur->next;
            }
            while(cur&&pre->next->val==cur->val){
                cur=cur->next;
                if(cur==NULL){
                    pre->next=NULL;
                    break;
                }
            }
            if(cur){
                pre->next=cur;
                cur=cur->next;
            }
  
        }
        return dummy->next;
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: