一尘不染

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

algorithm

在各种情况下,我多次面对这个问题。尽管我熟悉C或Java,但它对所有编程语言都是通用的。

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

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

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

我想避免一个数组在另一个数组内的重复迭代,这将使执行时间增加(A的长度乘以B的长度),这对于大型数组而言实在太多了。

有什么方法可以在每个数组中进行一次传递来获取公共元素?


阅读 339

收藏
2020-07-28

共1个答案

一尘不染

因为在我看来,这就像一个字符串算法,所以我暂时假设无法对该序列进行排序(因此无法对字符串进行排序),那么您可以使用最长公共序列算法(LCS)

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

2020-07-28