您的位置:首页 > 其它

删除排序链表中的重复数字 II -LintCode

2017-07-17 10:53 288 查看
给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。

样例:

给出 1->2->3->3->4->4->5->null,返回 1->2->5->null

给出 1->1->1->2->3->null,返回 2->3->null

#ifndef C113_H
#define C113_H
#include<iostream>
using namespace std;
class ListNode{
public:
int val;
ListNode *next;
ListNode(int val){
this->val = val;
this->next = NULL;
}
};
class Solution{
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode * deleteDuplicates(ListNode *head) {
// write your code here
if (head == NULL || head->next == NULL)
return head;
ListNode *node = new ListNode(-1);
ListNode *pre = node;
ListNode *cur = head;
while (cur != NULL)
{
if (cur->next != NULL&&cur->val == cur->next->val)
{
while (cur->next!=NULL&&cur->val==cur->next->val)
{
cur = cur->next;
}
}
else
{
pre->next = cur;
pre = pre->next;
}
cur = cur->next;
}
pre->next = cur;
return node->next;
}
};
#endif
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: