/*
DEFINITIONS
public class ListNode {
int val;
ListNode next;
public ListNode(int x){
val = x;
next = null;
}
}
public class LinkedList {
ListNode head;
}
*/
public void removeDups(){
ListNode head = this.head;
if(head == null) return;
HashSet<ListNode> set = new HashSet<>();
set.add(head);
while(head.next != null){
if(set.contains(head.next)){
head.next = head.next.next;
} else{
set.add(head.next);
head = head.next;
}
}
}
我應該刪除未排序列表中的重複項,但它不能在Java中工作。爲什麼我無法從鏈接列表中刪除重複項?
1->2->4->9->9->4
應該返回1->2->4->9
,但它仍然會返回1->2->4->9->9->4
問題是什麼?我清楚地將所有節點插入到一個哈希集並檢查它是否包含,但不知道發生了什麼?
請注意,因爲OP使用'HashSet',所以您還需要重寫'hashCode()',否則具有相同值的節點可能甚至不會被比較。當然,如果你重寫一個,你應該重寫這兩個,但是值得明確地說明。 –