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
原文地址:http://blog.csdn.net/chenlei0630/article/details/41653155