查找两个有序数组的中位数,时间复杂度为 O(log(m + n))
题目: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 示例 1: nums1 = [1, 3] nums2 = [2] 则中位数是 2.0 示例 2: nums1 = [1, 2] nums2 = [3, 4] 则中位数是 (2 + 3)/2 = 2.5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 首先明确几个点: 1、两个数组都是有序的 如 [1,3,5] [2,4,6] 合并后中位数为3、4,分别分布在数组1和数组2中,那么以3、4为分隔点,在数量上:数组1的左边元素个数 + 数组2的左边 = 数组1的右边 + 数组2右边元素个数 再如: [1,3,5] [0,2,4,6] 合并后中位数为3,只在数组1中,那我们将3放入数组2中,[0,2,3,4,6] 刚才的推论依然成立 中位数左边元素的数量等于中位数右边元素的数量 2、 数组1中,中位数左边最大的元素一定小于中位数右边最小的元素,当数组2中也有中位数