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

82. Remove Duplicates from Sorted List II

时间:2018-08-11 19:39:27      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:amp   origin   hat   href   space   des   rect   tmp   div   

82. Remove Duplicates from Sorted List II

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

Example 1:

Input: 1->2->3->3->4->4->5
Output: 1->2->5

Example 2:

Input: 1->1->1->2->3
Output: 2->3

My hints: 
        Fist come to my mind is the hash,but if the hash can be use directly in c++
        if we can use hash ,then compute the nodes which apearance exceed twice,the time is 2n,and the space is hash。。
        oh my gold,i realised that the number is progressive increase!
        It‘s simple,just have two more ListNode and traverse the List one time can solve the problem
        
best solution reference:https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/discuss/153511/C++-concise-one-pass-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 == NULL || head->next == NULL) return head; // List is null or have only one node
        ListNode *dummy = new ListNode(head->val - 1);      //add a node to deal with the first bode in original list more conveniently
        dummy->next = head;
        ListNode *p = dummy;
        while(p != NULL && p->next != NULL) {              //traverse the list node
            ListNode *pnex = p->next;                      
            if(pnex->next != NULL && pnex->next->val == pnex->val) {
                while(pnex->next != NULL && pnex->next->val == pnex->val) {
                    ListNode *tmp = pnex->next;
                    pnex->next = tmp->next;
                    delete tmp;
                }
                p->next = pnex->next;
                delete pnex;
            }
            else
                p = p->next;
        }
        head = dummy->next;
        delete dummy;
        return head;
        
    }
};

 

82. Remove Duplicates from Sorted List II

标签:amp   origin   hat   href   space   des   rect   tmp   div   

原文地址:https://www.cnblogs.com/hozhangel/p/9460730.html

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