java – 如何获得两个数组之间的交集作为一个新的数组?

我在各种情况下多次遇到这个问题。它对所有编程语言都是通用的,虽然我对C或Java很熟悉。

让我们考虑两个数组(或集合):

char[] A = {'a', 'b', 'c', 'd'};
char[] B = {'c', 'd', 'e', 'f'};

如何获取两个数组之间的公共元素作为新数组?
在这种情况下,数组A和B的交集是char [] c = {‘c’,’d’}。

我想避免在另一个数组里面的一个数组的重复迭代
将执行时间增加(B的长度为A的长度),在大型阵列的情况下该执行时间过多。

有什么办法,我们可以做一个单一的传递在每个数组,以获得共同的元素?

由于这看起来像我一个字符串算法,我将假设一会儿,它不可能排序这个序列(因此字符串),那么你可以使用Longest Common Sequence algorithm (LCS)

假设输入大小是常数,则问题的复杂度为O(nxm),(两个输入的长度)

http://stackoverflow.com/questions/13270491/how-do-i-get-the-intersection-between-two-arrays-as-a-new-array

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 如何获得两个数组之间的交集作为一个新的数组?