所以,你有n个已排序的数组(长度不一定相等),你需要返回合并所有n个已排序数组后第k小的元素。
我已经尝试了很长时间,包括其他变体,但到目前为止,我只对两个长度相等的数组感到舒适,它们都是排序好的,需要返回这两个数组的中位数。这具有对数时间复杂度。
之后,我尝试将其推广到找到两个排序数组中的第k小值。这里是SO上的问题。 即使在这里,所给出的解决方案对我来说也不明显。但是,即使我设法说服自己接受此解决方案,我仍然好奇如何解决绝对通用的情况(这就是我的问题)
有人可以向我解释一步一步的解决方案(我认为应该采用对数时间,即O(log(n1) + log(n2) ... + log(nN),其中n1,n2...nN是n个数组的长度),从更具体的情况开始,逐渐推广至更一般的情况吗?
我知道互联网上有很多关于更具体情况的类似问题,但我还没有找到令人信服和清晰的答案。
这里是SO的一个问题(以及其答案),它涉及5个排序数组并找到组合数组的中位数。答案变得过于复杂,以至于我无法推广它。
甚至对于更具体的情况(如我在帖子中提到的情况),干净的方法也是受欢迎的。
附言:你认为这可以进一步概括为未排序数组的情况吗?
附言2:这不是一道作业题,我只是在为面试做准备。