![在这里插入图片描述](https://img-blog.csdnimg.cn/20201124155017745.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTQxNTkyOQ==,size_16,color_FFFFFF,t_70#pic_center)
审题
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
气死我了!码了一堆字,让我给删除了…删除了…直接上代码了,不好意思。
代码实现
方案一(上文提到的的方法):
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if ( !head ) return head;
int flag=0;
ListNode* ff = new ListNode;
ff->next = head;
ListNode* real_ff = ff;
ListNode* f=head;
ListNode* l = head->next;
for ( ; l; l = l->next ) {
if ( f->val == l->val ) {
flag = 1;
continue;
} else if ( flag == 1 ) {
ff->next = l;
flag = 0;
f = l;
} else {
f = f->next;
ff = ff->next;
}
}
if ( flag == 1 ) {
ff->next = NULL;
}
return real_ff->next;
}
};
方案2:
无官方题解,上文解答时间复杂度为线性,可以使用。
反思
下篇换专题,收工。