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