面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例1:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]
示例2:
输入:[1, 1, 1, 1, 2]
输出:[1, 2]
解题思路:
1.重复节点去除重复,使用set来存储数据。
2.遍历链表对数据进行删除操作。
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
//1.首先判断是列表是否为空
if(head==null){
return null;
}
//2.定义去重复的set
Set<Integer> set=new HashSet<Integer>();
//3.遍历链表
ListNode temp1=head;
set.add(temp1.val);
//遍历链表
while(temp1.next!=null){
//如果下一个值存在set集合里,那么需要删除。
if(set.contains(temp1.next.val)){
temp1.next=temp1.next.next;
}else{
//不存在,则加入到set里面。
set.add(temp1.next.val);
temp1=temp1.next;
}
}
return head;
}
}
如果大佬们觉得可以,可以关注这个微信公众号,后续会更新大数据相关源码以及刷题的资料。