当前位置:   article > 正文

LeetCode 面试题 02.01. 移除重复节点 题解 C/C++_编写函数removeduplicate(list):从整数列表list中删除重复的元素。c++

编写函数removeduplicate(list):从整数列表list中删除重复的元素。c++
主要思路

将链表中结点的值插入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;
	}
};

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/380493
推荐阅读
相关标签
  

闽ICP备14008679号