移除未排序链表中的重复节点,保留最开始出现的节点。
struct ListNode
{
int val;
ListNode* next;
ListNode(int x):val(x),next(NULL){}
};
class Solution
{
public:
ListNode* removeDuplicateNodes(ListNode* head)
{
if(head==NULL) return head;
unordered_set<int> s;//建立集合
s.insert(head->val);//插入头节点值
ListNode* pre=head;
while(pre->next)
{
if(s.find(pre->next->val)!=s.end())
{
//值重复
pre->next=pre->next->next;
}
else
{
//值第一次出现
s.insert(pre->next->val);
pre=pre->next;
}
}
return head;
}
};