面试题 02.01. 移除重复节点

ListNode* removeDuplicateNodes(ListNode* head)
{
	if (head == NULL || head->next == NULL) return head;
	set<int> si;
	ListNode* l1 = head, * l2 = head->next;
	si.insert(l1->val);
	while (l1->next)
	{
		if (si.count(l2->val))//存在过
		{
			l1->next = l2->next;
			delete(l2);
			l2 = l1->next;
		}
		else//第一次出现
		{
			si.insert(l2->val);//先插入 因为要移动节点
			l1 = l2;
			l2 = l1->next;
		}
	}
	return head;
}
发布了175 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43461641/article/details/104621465