标签:
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.
/**
* 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;
ListNode* pre=new ListNode(0); //在头节点前插一个节点,可以不用判断头节点和后面的值相等
pre->next=head;
ListNode* p=pre;
while(p->next!=NULL)
{
ListNode* first=p->next; //重复元素首节点
ListNode* last=first->next; //重复元素尾节点
int count=0;
while(last!=NULL&&first->val==last->val)
{
last=last->next;
count++;
}
if(count>0)
p->next=last;
else
p=p->next;
}
return pre->next;
}
};leetcode No82. Remove Duplicates from Sorted List II
标签:
原文地址:http://blog.csdn.net/u011391629/article/details/52142420