在java中合并两个没有重复的数组

时间:2014-08-20 10:32:10

标签: java arrays

我想知道是否有任何方法可以将两个不同的数组合并到一个没有重复值的数组。 这必须以O(n + m)的时间效率工作。

n= a.length (first array)
m = b.length (second array)

节点:

  • 按顺序不需要包含结果数组的每个数组。
  • 确保每个数组本身都没有重复值。

地方效率没有限制,但使用在两个数组中以最大值的长度创建新数组的解决方案无效,然后根据值将每个值放在正确的索引中。原因是,如果最大值为10亿,则意味着我需要创建一个包含十亿个单元的数组。

2 个答案:

答案 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());
}

编辑好吧,我没有阅读关于效率的部分,但没有阅读