您的位置:首页 > 其它

Remove Duplicates from Sorted List II

2015-06-18 16:32 281 查看
Description:

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
.

Code:

ListNode* deleteDuplicates(ListNode* head) {
if (head)
{
ListNode* p = head;
ListNode* lastNode = head;

int lastDeleteVal = 0;
bool flag = false;//flag为false表示还没有元素被删除

while (p)
{
if ( (flag == true && p->val == lastDeleteVal)
|| (p->next!=NULL && p->val == p->next->val))
{//删除p
lastDeleteVal = p->val;
if (p == head)
head = p->next;
else
lastNode->next = p->next;
p = p->next;
if (flag == false)
flag = true;
}
else
{
lastNode = p;
p = p->next;
}
}
}
return head;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: