您的位置:首页 > 其它

[leetcode]Remove Duplicates from Sorted List II

2014-12-01 21:07 381 查看

问题描述:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: