从我的问题
Insert element to ArrayList with ascending order and no duplicate elements
我已经完成了插入方法。
现在我试着找出如何构建联合,交集和差异方法来操作2个IntSet。
请注意,IntSet的数字元素很大,我需要在 O(m + n)时间内进行,其中m和n是两个IntSets的元素数。
例如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); }
我该怎么做?
P.S。它可以使用mergesort吗?
编辑:
这是我的工会代码
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;
}
答案 0 :(得分:2)
您可以使用java集合的方法,例如addAll(Collection)
,removeAll(Collection)
和retainAll(Collection)
。
例如,两组的交集:
public Set<V> intersection(Set<? extends V> a, Set<? extends V> b) {
// you may swap a and b, so a would contain the smaller collection
Set<V> result = new HashSet<V>(a);
result.retainAll(b);
return result;
}