我想知道是否有任何方法可以将两个不同的数组合并到一个没有重复值的数组。 这必须以O(n + m)的时间效率工作。
n= a.length (first array)
m = b.length (second array)
节点:
地方效率没有限制,但使用在两个数组中以最大值的长度创建新数组的解决方案无效,然后根据值将每个值放在正确的索引中。原因是,如果最大值为10亿,则意味着我需要创建一个包含十亿个单元的数组。
答案 0 :(得分:0)
我们需要在数组声明时声明大小。所以在那之后我们无法修改。 使用新数组我们无法合并。
在我看来,最好使用集合
答案 1 :(得分:0)
不是最漂亮的但是有效。
public static void main(String [] args){
int [] one = {1,2,3,6,7,9,10};
int [] two = {1,2,4,5,7,8,10};
List three = new ArrayList();
for(int x = 0; x < one.length; x++){
three.add(one[x]);
}
for(int z = 0; z < two.length; z++){
if(!three.contains(two[z])){
three.add(two[z]);
}
}
java.util.Collections.sort(three);
System.out.println(three.toString());
}
编辑好吧,我没有阅读关于效率的部分,但没有阅读