以下是否有快速算法?

时间:2012-06-12 19:15:16

标签: algorithm complexity-theory

我有两个排序的数组A和B,每个都是长度为n。

我还有一组索引S,其中索引在1到n之间。 (例如,如果n = 3,则S可以是(1,2),(2,3)和(1,1))。

我想要一个非常快速的算法(最好是O(log n)),这样它就能从S中找到最大化A [i] + B [j]的对(i,j)。

可以对S进行任何预处理(散列某些值等)。

任何O(n log n)预处理都可以在A和B上完成(因为它总是需要时间对它们进行排序),但是一旦完成预处理,后续查询的各种预处理的S应该很快。

感谢任何想法。

1 个答案:

答案 0 :(得分:0)

这不能在小于O(n)的情况下完成。

如果S={(i,n-i+1)|1≤i≤n}您没有其他解决方案而不是测试S的每个元素,因为对于i≠jA[i]+B[n-i+1] < A[j]+B[n-j+1]A[i]+B[n-i+1] ≥ A[j]+B[n-j+1]都是可能的。