一尘不染

Java,找到两个数组的交集

algorithm

public static int[] intersection (int [] x, int numELementsInX, int [] y, int numElementsInY) {

我正在尝试检查两个数组以及它们的元素数量(numElementsInX和numElementsInY),并返回一个包含数组x和y的公共值的新数组。他们的交集。

Example,if x is{1,3,5,7,9}and y is{9,3,9,4} then
intersection(x, 5, y, 4} should return {3, 9} or {9, 3}

我读过我需要使用LCS算法。谁能给我一个关于如何做到这一点的例子?数组和数组中的值都用另一种方法初始化和生成,然后传递到交集。

任何帮助/澄清表示赞赏。

编辑代码

for (int i=0; i<numElementsInX; i++){
    for (int j=0; j<numElementsInY; j++){
        if (x[j]==x[i]) { //how to push to new array?; 
        }
        else{
        }
    }
}

阅读 182

收藏
2020-07-28

共1个答案

一尘不染

最简单的解决方案是使用集,只要您不关心结果中的元素将具有不同的顺序,并且重复项将被删除即可。输入数组array1array2是与要处理的元素数相对应Integer[]的给定int[]数组的子数组:

Set<Integer> s1 = new HashSet<Integer>(Arrays.asList(array1));
Set<Integer> s2 = new HashSet<Integer>(Arrays.asList(array2));
s1.retainAll(s2);

Integer[] result = s1.toArray(new Integer[s1.size()]);

上面将返回Integer[],如果需要,可以很容易地将其内容复制并转换为int[]

2020-07-28