【发布时间】:2008-10-29 01:56:15
【问题描述】:
假设我有两个数组:
int ArrayA[] = {5, 17, 150, 230, 285};
int ArrayB[] = {7, 11, 57, 110, 230, 250};
两个数组都是排序的,可以是任意大小。我正在寻找一种有效的算法来查找数组之间是否包含任何重复的元素。我只想要一个正确/错误的答案,我不在乎共享哪个元素或共享多少。
天真的解决方案是遍历 ArrayA 中的每个项目,并在 ArrayB 中为它执行binary search。我相信这个复杂度是 O(m * log n)。
因为两个数组都是排序的,看起来应该有一个更有效的算法。
我还想要一个不假设数组包含数字的通用解决方案(即该解决方案也应该适用于字符串)。但是,比较运算符定义明确,两个数组都按从小到大排序。
【问题讨论】:
-
顺便说一句,我们说您在此处概述的解决方案的复杂性是 O(m * log n),其中 m 和 n 是两个数组的大小。
-
我有一种感觉,就是这样。谢谢。
标签: algorithm language-agnostic