题目
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例1:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]
示例2:
输入:[1, 1, 1, 1, 2]
输出:[1, 2]
解题思路
方法1:利用HashSet的唯一性
- 利用HashSet的唯一性,去掉重复的
- 中间设置一个指针,如果该节点没有重复则temp = temp.next;
- 如果重复了 则:temp.next = temp.next.next;
class Solution {
public ListNode removeDuplicateNodes(ListNode head) {
ListNode res = new ListNode(-1);
res.next = head;
ListNode temp = res;
Set<Integer> set = new HashSet<>();
int set_size = set.size();
while (temp.next != null) {
set.add(temp.next.val);
if (set_size != set.size()) {
temp = temp.next;
}else {
temp.next = temp.next.next;
}
set_size = set.size();
}
return res.next;
}
}