在各种情况下,我多次面对这个问题。尽管我熟悉C或Java,但它对所有编程语言都是通用的。
让我们考虑两个数组(或集合):
char[] A = {'a', 'b', 'c', 'd'}; char[] B = {'c', 'd', 'e', 'f'};
如何获得两个数组之间的公共元素作为新数组?在这种情况下,数组A和B的交集为char[] c = {'c', 'd'}。
char[] c = {'c', 'd'}
我想避免一个数组在另一个数组内的重复迭代,这将使执行时间增加(A的长度乘以B的长度),这对于大型数组而言实在太多了。
有什么方法可以在每个数组中进行一次传递来获取公共元素?
因为在我看来,这就像一个字符串算法,所以我暂时假设无法对该序列进行排序(因此无法对字符串进行排序),那么您可以使用最长公共序列算法(LCS)
假设输入大小恒定,则问题的复杂度为O(nxm),(两个输入的长度)