/*
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()もオーバーライドする必要があることに注意してください。もちろん、両方を上書きする必要がありますが、明示的に述べる価値があります。 –