私はLinkedListから複製を削除する方法を理解しようとしています。私はグーグルで、いくつかの答えを見つけましたが、彼らはノードとして言及した答えの中にいくつか答えました。私はこのノードがどこから来ているのか分からないのですが、LinkedListに値が「ノード」として返されるメソッドがないのでオーダーを保持してリンクリストの複製を削除するには
これを理解するのに役立つ人がいれば素晴らしいことでしょう。
私はLinkedListから複製を削除する方法を理解しようとしています。私はグーグルで、いくつかの答えを見つけましたが、彼らはノードとして言及した答えの中にいくつか答えました。私はこのノードがどこから来ているのか分からないのですが、LinkedListに値が「ノード」として返されるメソッドがないのでオーダーを保持してリンクリストの複製を削除するには
これを理解するのに役立つ人がいれば素晴らしいことでしょう。
Goが、これはよくあなたの質問に答える:
http://www.geeksforgeeks.org/remove-duplicates-from-a-sorted-linked-list/
リンクリストを繰り返し、各要素をハッシュテーブルに追加します。重複した要素を発見すると、その要素を削除して反復処理を続行します。リンクされたリストを使用しているので、これをすべて1回で行うことができます。
次の解は、O(n)時間かかるが、nはリンクリストの要素数である。
public static void deleteDups (LinkedList<Integer> list){
HashMap<Integer, Boolean> map = new HashMap<>();
Iterator<Integer> itr = list.iterator();
while(itr.hasNext()){
int nextNode = itr.next();
if(map.containsKey(nextNode)){
itr.remove();
} else {
map.put(nextNode, true);
}
}
}
ノードにアクセスできないため、LinkedListの内部が公開されるためです。イテレータを使用してリストを反復することができます。イテレータはノードを追跡し、イテレータではremoveを呼び出すことができます。下のリンクを介して
おかげで応答をamansinghal。私はこのLinkedListNodeがどこから来ているのか分からないのですか? – OneTwo
LinkListNodeは抽象的な概念です。基本的にリンクリストのエントリをノードと呼びます。あなたが理解しやすいようにコードを更新しました。 – AmanSinghal