您的位置:首页 > 其它

LeetCode83——Remove Duplicates from Sorted List

2016-01-27 21:45 375 查看

LeetCode83——Remove Duplicates from Sorted List

LeetCode82——Remove Duplicates from Sorted List II类似,不删重,也就是说如果有重复的元素,保留一个。

原题

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,

Given 1->1->2, return 1->2.

Given 1->1->2->3->3, return 1->2->3.

分析

就跟上一题类似了,依然构造头指针,不同的是,我们在进行重复元素的循环判断并删除的时候,保留一个即可。

代码

class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode * start = new ListNode(0);
start->next = head;
ListNode * p = start->next;
ListNode*q = start;
while (NULL!=p&&p->next != NULL)
{
if (p->next != NULL&&p->next->val == p->val)
{
while (p->next != NULL&&p->next->val == p->val)
{
ListNode * r = p;
p = p->next;
delete r;
}
q->next = p;//保留一个元素
q=q->next;//始终让q位于可行链表的最后一个位置
p = p->next;
}
else
{
p = p->next;
q = q->next;
}
}
return start->next;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: