题目
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
C++解法
#include <iostream>
#include <vector>
#include <map>
#include <set>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode * p = new ListNode(0);
p->next = head;
head = p;
ListNode * left, * right;
while (p->next) {
left = p->next;
right = left;
while (right->next && right->next->val == left->val) {
right = right->next;
}
if (left == right) p = p->next;
else p->next = right->next;
}
return head->next;
}
};
int main(int argc, const char * argv[]) {
// insert code here...
Solution solution;
ListNode * node = new ListNode(1);
node->next = new ListNode(1);
node->next->next = new ListNode(1);
node->next->next->next = new ListNode(2);
node->next->next->next->next = new ListNode(3);
ListNode * result = solution.deleteDuplicates(node);
while (result != NULL) {
cout << result->val << " ";
result = result->next;
}
cout << endl;
return 0;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
网友评论