题目描述
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
思路:
用set集合
set集合的特点是去重,从链表的头开始遍历,如果在set集合中出现了重复的元素,我们就把他跳过。
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
Set<Integer> set = new HashSet<>();//定义set集合
ListNode cur = head;//定义cur指针指向头结点
//循环的条件是cur指针不为空,并且他的头结点不为空
while (cur != null && cur.next != null) {
set.add(cur.val);//把值添加到set集合中
if (set.contains(cur.next.val))//如果set集合中包含cur的下一个的值
cur.next = cur.next.next;//就把指针指向他的下下个,跳过下一个
else
cur = cur.next;//否则把下一个的值添加到节点中
}
return head;//最后返回
}
}