题目在这里。
先举两个例子:
例1
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
例2
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
实际上这道题我们可以扩展为:求两个递增数组的第k(从1开始)个数。中位数只是其中的一个特例。
这道题我们可以采用二分查找(binary search)的思想来处理。
先上一张图:
很明显,我们要求的目标值是下标为5和6的两个元素的平均值。我们先求下标为5的元素的值也就是第6个元素,或者说,我们称之为新数组第六小的元素。
我们假设,前6个元素中有3个元素从nums1中取得,有三个元素从nums2中取得。如果nums1[2]的值<= nums2[2],那么根据递增数组的性质,我们能够知道,nums1中前三个元素的值都<=nums2[2],所以,nums1中的前三个元素一定不是第六小的元素,直接丢弃。这时候,nums1的指针n指向下标3的位置,nums2的指针m依然停留在0