我正在尝试找到五个已排序数组的中位数解决方案。这是一个面试问题。
我能想到的解决方法是合并这5个数组,然后找到中位数[O(l+m+n+o+p)]。
我知道对于长度相同的两个排序数组,我们可以在log(2n)的时间内完成。[通过比较两个数组的中位数,然后丢弃每个数组的一半并重复此过程]..在排序数组中找到中位数可能是恒定时间..所以我认为这不是log(n)?..这的时间复杂度是多少?
1] 是否有相似的解决方案适用于5个数组。如果数组具有相同的大小,则是否有更好的解决方案?
2] 我假设由于这被问到了5个,那么N个排序数组应该有某些解决方案吗?
感谢任何指针。
我向面试官提出了一些澄清/问题:
数组长度相同吗
=> 不行
我想数组的值会有重叠
=> 是的
作为练习,我认为2个数组的逻辑不能延伸。这里是一个尝试:
将上述2个数组的逻辑应用于3个数组:
[3,7,9] [4,8,15] [2,3,9] ... 中位数为7、8、3
丢弃元素[3,7,9] [4,8] [3,9] .. 中位数7,6,6
丢弃元素[3,7] [8] [9] ..中位数5,8,9 ...
丢弃元素[7] [8] [9] .. 中位数=8 ... 这似乎不正确?
已排序元素的合并 => [2,3,4,7,8,9,15] => 预期中位数 = 7