假设我有两个数组:
int ArrayA[] = {5, 17, 150, 230, 285}; int ArrayB[] = {7, 11, 57, 110, 230, 250};
这两个数组都是排序好的,长度可以任意。我正在寻找一种有效的算法来查找它们之间是否存在任何重复元素。我只需要一个真/假答案,不关心共享哪个元素或有多少个。
朴素的解决方案是遍历ArrayA中的每个项,并在ArrayB中进行二分搜索。我认为这个复杂度是O(m * log n)。
因为这两个数组都是排序的,所以似乎应该有一种更有效的算法。
我还希望有一个通用的解决方案,不假定数组保存数字(即解决方案也适用于字符串)。但是,比较运算符已经定义好了,两个数组都是从最小到最大排序的。
int ArrayA[] = {5, 17, 150, 230, 285}; int ArrayB[] = {7, 11, 57, 110, 230, 250};
这两个数组都是排序好的,长度可以任意。我正在寻找一种有效的算法来查找它们之间是否存在任何重复元素。我只需要一个真/假答案,不关心共享哪个元素或有多少个。
朴素的解决方案是遍历ArrayA中的每个项,并在ArrayB中进行二分搜索。我认为这个复杂度是O(m * log n)。
因为这两个数组都是排序的,所以似乎应该有一种更有效的算法。
我还希望有一个通用的解决方案,不假定数组保存数字(即解决方案也适用于字符串)。但是,比较运算符已经定义好了,两个数组都是从最小到最大排序的。