赞
踩
将链表中结点的值插入set中,如果该值已经在集合中出现了,即该值的数目大于0,说明它就是重复的元素,将其删除。
具体删除方法为:始终维护一个指向符合条件的结点的指针(符合条件指:该节点的值之前没有出现过),如果后续的结点符合条件那么该指针后移,即指向下一个符合条件的结点,否则该指针原地不动,其next指向不断后移,直到下一个符合条件的结点出现或者链表到达末尾。
struct ListNode { int val; ListNode *next; ListNode(int x):val(x),next(nullptr) {} }; class Solution { public: ListNode *removeDuplicateNodes(ListNode *head) { if(head==nullptr||head->next==nullptr)return head; set<int > si; ListNode *dummyNode = new ListNode(0,head); ListNode *cur = dummyNode; while(cur&&cur->next) { if(si.count(cur->next->val)) { cur->next = cur->next->next; continue; } si.insert(cur->next->val); cur = cur->next; } return head; } };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。