第一步:假设两个有序数组(已经各自排序完成了)长度相等,试写函数找出两个数组合并后的中位数
第二步:假设两个有序数组长度不等,一样的求出中位数
解析: 这个题目看起来非常简单。第一题的话: 假设数组长度为n, 那么我就把数组1和数组2直接合并,然后再直接找到中间元素。对于这样的方案,第一题和第一题就没有什么区别了。这样的话时间复杂度就是O(n)。通常在这样的情况下,那些mentor类型的达人就会循循善诱道:“你还有更好的办法吗:)” 如果比线性更高效,直接能想到的就是对数了O(log(n)),这个时间复杂度在这里可能吗? 当然还是可能的。来继续看看下面的分析。
先找来了一个图(自己画的,简陋了点)

这篇博客探讨了如何通过二分查找在两个已排序的数组中找到合并后的中位数。首先分析了长度相等的情况,通过比较数组中间元素缩小搜索范围,然后递归解决。接着讨论了数组长度不等的情况,同样采用二分查找方法,根据比较结果调整搜索区间,降低问题复杂度。最终,给出了相应的递归代码实现。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



