82. Remove Duplicates from Sorted List II
Posted hozhangel
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了82. Remove Duplicates from Sorted List II相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
82. Remove Duplicates from Sorted List II
82. Remove Duplicates from Sorted List II(js)
82. Remove Duplicates from Sorted List II
82. Remove Duplicates from Sorted List II