【发布时间】:2012-06-21 15:29:57
【问题描述】:
给定两个数组,如何找到两个数组共有的最大元素?
我正在考虑对两个数组进行排序(n log n),然后对另一个数组中的一个排序数组(从较大的数组开始)中的每个元素执行二进制搜索,直到找到匹配项。
例如:
a = [1,2,5,4,3]
b = [9,8,3]
Maximum common element in these array is 3
我们能比 n log n 做得更好吗?
【问题讨论】:
-
并不是说它有助于整体复杂性,但在你的最后一步中,当你发现一个太小的值时,线性搜索可能会比二分搜索更快。每次您都可以从上次中断的地方重新启动它(而不是从头开始),因为您要查找的值小于您查找的最后一个值。所以搜索的总时间是 O(“另一个数组”的大小),在“一个排序数组”的元素之间分配不均匀。您还可以进行插值搜索等。
标签: algorithm