从两个集合中返回第j个最小元素的算法

问题描述 投票:0回答:1

我有一个任务,要求相等大小的两个集合M和N j具有不同的数字,只能访问函数kthsmallestM(int k)和kthsmallestN(int k),它们返回第k个最小的整数分别来自M和N,算法应从M + N中找到第[j个最小元素。

使用蛮力执行此操作的方法非常明显,但是该算法应在对kthsmallestM或kthsmallestN进行O(log

j

)调用的情况下运行。我不是在寻找完整的解决方案,但是我已经坚持了一段时间,所以只需要一些帮助我入门的指示即可!

我尝试过的事情:检查M的最大元素是否小于N的最小元素,反之亦然,根据情况,答案将仅仅是M或N的最大元素。我尝试使用它来创建一个递归算法,该算法对两个集合的较小元素执行相同的检查,但是很快就变成了O(n)。

任何提示?
algorithm set divide-and-conquer
1个回答
0
投票

k

© www.soinside.com 2019 - 2024. All rights reserved.