このリストから3を削除したいが、どこから開始するのか分からない。私は、リンクリストを実装プライオリティキューに一連の番号を格納し、分を見つけ、LinkedListからminを削除する
import java.util.Iterator;
import java.util.LinkedList;
public class Test {
static LinkedList<Integer> list = new LinkedList<Integer>();
public static void main(String[] args) {
list.add(10);
list.add(4);
list.add(12);
list.add(3);
list.add(7);
System.out.println(removeMin());
}
public static Integer removeMin() {
LinkedList<Integer> pq = new LinkedList<Integer>();
Iterator it = pq.iterator();
for (int i = 0; i < list.size(); i++) {
pq.add(list.remove());
}
int min = pq.get(0);
while (it.hasNext()) {
// help here
}
return pq.remove();
}
私は間違いなくO(n)ランダムアクセス時間でLinkedListをソートしようとしません。 – BladeCoder
ありがとう@BladeCoder。並べ替えを必要としないもう1つの答えを追加しました –
同じパフォーマンスの問題:LinkedListは要素への直接アクセスをサポートしていないため、get(i)はO(n)操作です。それぞれの反復で始まります。代わりにIteratorを使用する必要があります。 – BladeCoder