【发布时间】:2011-10-31 17:13:12
【问题描述】:
这不是原始问题。我有一个复杂的问题,现在简化为:
有两个排序数组,A 和 B,分别带有 m 和 n 元素,m = \Theta(n)
在o(mn) 时间运行的算法能否找到最大对数,使得A[i]-B[j] <= T 其中 T 是某个常数?如何才能做到这一点?
编辑:
这些对应该是不相交的,即一个元素最多只能选择一次。
算法应该在 little-o(mn) 中运行,这意味着在 mn 时间内运行的解决方案是不可接受的。
是否也可以找到我们选择的对?
澄清:
如果数组是a_1, a_2, ..., a_m 和b_1, b_2, ..., b_n,我需要找到对(a_i, b_j) 这样|a_i - b_j| <= T。不允许多次选择一个元素。我们如何最大化给定数组的对数?
【问题讨论】:
-
以前从未见过 little-O:en.wikipedia.org/wiki/…。 Wiki 说
o(mn)意味着复杂性由mn主导,这意味着mn时间是 可以接受的,m+n是不 可以接受的。请澄清。 -
@MooingDuck:不,右边有一个 epsilon 因子 - 这意味着它必须比 mn 运行快。跨度>
-
@AasmundEldhuset:我重读了这篇文章。我又错了。你是对的。
-
@MooingDuck 你能详细说明怎么做吗?
-
没关系,新的说明有一个绝对值,这意味着这个页面上的每个答案(截至目前)都是不正确的。
标签: java c++ c algorithm data-structures