私の質問から
挿入方法を実行しました。
ここで、2 つの IntSet を操作するユニオン、インターセクション、および差分メソッドを作成する方法を見つけようとしています。
IntSet の要素数が多く、O(m+n)時間で実行する必要があることに注意してください。ここで、m と n は 2 つの IntSet の要素数です。
たとえば、IntSets
a = new IntSetExtra();
b = new IntSetExtra();
for(int i=0; i<300; i++){ a.insert(2*i); }
for(int i=0; i<300; i++){ a.insert(i); }
for(int i=20000; i<50000; i++){ b.insert(i); }
どうすればいいですか?
PSマージソートを使用できますか?
編集:
これが私のユニオンコードです
public IntSetExtra union(IntSetExtra a){
//effect: return new IntSet that union between this and a;
IntSetExtra intSet = new IntSetExtra();
intSet.addAll(a);
for(int i=0; i<a.size(); i++){
if(!intSet.contains(a.get(i))){
intSet.insert(a.get(i));
}
}
return intSet;
}