剑指offer 删除链表中重复的结点
2017-04-23 08:36
441 查看
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路1:当前节点值与下一节点值进行比较,如果重复,则直到找到不重复的节点,然后将节点添加到没有重复的开始节点之后。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
// 新建一个头结点
ListNode *first = new ListNode(-1);
first->next = pHead;
ListNode *p = pHead;
ListNode *last = first;
while (p != NULL && p->next != NULL)
{
// 如果有元素重复
if (p->val == p->next->val)
{
// 就跳过所有重复的数字
int val = p->val;
while (p != NULL && p->val == val)
{
p = p->next;
}
last->next = p;
}
else
{
last = p;
p = p->next;
}
}
return first->next;
}
};
相关文章推荐
- (C++)剑指offer-56:删除链表中重复的结点(链表)
- 【剑指Offer】面试题57:删除链表中重复的结点
- 剑指offer:删除链表中重复的结点
- 剑指offer—删除链表中重复的结点
- 剑指offer | 训练题55:删除链表中重复的结点
- 剑指offer: 删除链表中重复的结点
- 【剑指offer】删除链表中重复的结点
- 剑指offer--删除链表中重复的结点
- 剑指Offer-删除链表中重复的结点
- 剑指Offer_56_删除链表中重复的结点
- 剑指offer_链表---删除链表中重复的结点
- [剑指offer]删除链表中重复的结点
- 剑指Offer--057-删除链表中重复的结点
- 【剑指Offer学习】【面试题57:删除链表中重复的结点】
- 剑指offer面试题57 删除链表中重复的结点
- 剑指offer57 删除链表中重复的结点
- 剑指offer57道题(删除链表中的重复结点)
- 剑指offer面试题[57]-删除链表中重复的结点
- 剑指offer—删除链表中重复的结点
- 剑指offer-56.删除链表中重复的结点