码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode]Remove Duplicates from Sorted List II

时间:2014-12-01 22:31:26      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:leetcode   算法   

问题描述:

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.


基本思路:

设定一个标志是否是重复数字的变量isrepeat,当前和后一个一样就将isrepeat置true。 然后将isrepeat的节点删除,留下不重复节点。


代码:

ListNode *deleteDuplicates(ListNode *head) {  //C++
        if(head == NULL || head->next == NULL) 
            return head;
            
        ListNode tmphead(0);
        tmphead.next= head;
        
        ListNode* pre = &tmphead;
        ListNode* tmp = head;
        
        bool isRepeat = false;
        while(tmp->next != NULL)
        {
            if(tmp->val == tmp->next->val)
            {
                isRepeat = true;
            }
            else 
            {
                if(isRepeat)
                {
                    isRepeat = false;
                }
                else 
                {
                    pre->next = tmp;
                    pre = tmp;
                }
            }
            tmp = tmp->next;
        }
        if(!isRepeat)
        {
            pre->next = tmp;
            pre = tmp;
        }
        pre->next = NULL;
        return tmphead.next;
    }


[leetcode]Remove Duplicates from Sorted List II

标签:leetcode   算法   

原文地址:http://blog.csdn.net/chenlei0630/article/details/41653155

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!