我有一个作业要求从相等大小的 j 的两个集合M和N中保存不同的数字,只能访问函数kthsmallestM(int k)和kthsmallestN(int k),这些函数返回分别从M和N开始的第k个最小整数,算法应从M + N找到第 j 个最小元素。
使用蛮力执行此操作的方法非常明显,但是该算法应在对kthsmallestM或kthsmallestN进行O(log j )调用的情况下运行。我不是在寻找完整的解决方案,但是我已经坚持了一段时间,所以只需要一些帮助我入门的指示即可!
我尝试过的事情: 检查M的最大元素是否小于N的最小元素,反之亦然,根据情况,答案将仅仅是M或N的最大元素。我尝试使用它来创建一个递归算法,该算法对两个集合的较小元素执行相同的检查,但是很快就变成了O(n)。
有什么提示吗?