gpt4 book ai didi

java - O(m+n) 次的并、交、差大 IntSet

转载 作者:行者123 更新时间:2023-11-30 05:10:25 30 4
gpt4 key购买 nike

来 self 的问题

Insert element to ArrayList with ascending order and no duplicate elements

我已经完成了插入方法。

现在我尝试找出如何构建并集、交集和差集方法来对 2 个 IntSet 进行操作。

请注意,IntSet 的元素数量很大,我需要在 O(m+n) 时间内完成,其中 m 和 n 是两个 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); }

我该怎么做?

附注它可以使用归并排序吗?

编辑:

这是我的工会代码

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;
}

最佳答案

您可以只使用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;
}

关于java - O(m+n) 次的并、交、差大 IntSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601887/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com