4.寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
示例 2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
二分查找
直接求中位数可能不好想到,那么我们换个思路.假设有下面两个数组 A 和 B,A数组的长度是4,B数组的长度是8。
如上图,因为A+B的总长度是12,是偶数,所以求中位数的话,需要找到第6小、第7小的元素,找到这两个元素后,相加再 / 2 就可以了。
这里是偶数长度的情况,如果是两个数组长度相加后是