题目大意
https://leetcode.com/problems/median-of-two-sorted-arrays/
求两个有序数组的中位数,时间复杂度要求是log(m+n)
题目分析
单个数组中位数的问题的讨论见我之前一篇博客
思路参考了这里:https://discuss.leetcode.com/topic/28602/concise-java-solution-based-on-binary-search 先把问题转化成两个有序数组的第k小的元素。nums1的长度是l1,nums2的长度是l2,如果要找第k小的元素,可以先这样考虑,分别取nums1和nums2的第k / 2个元素,不妨设为a和b,显而易见,两个数组中的第k小的元素不可能同时小于a和b,而且如果a < b
的话,那么a以及nums1中a之前的元素都可以舍弃掉了,这样问题由k降了一半,最后复杂度是o(log(m + n))
,当然边界和特殊情况是要做处理的。
代码
|
|