4. Median of Two Sorted Arrays
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
问题描述:
就是两个已经排好序的数组,找去两个数组中的中位数(中位数就是中间的数,如果是偶数个,就是两个数的平均值)。
解法1:
这个题目最简单的方法就是将这两个排好序的数组再排成一个新的数组,然后再找中位数就可以了,但是这样子做肯定是最耗时的,而且题目要求的是时间复杂度为O(log (m+n))。
解法2:
用的就是二分法的思想,就是把两个数据都平分,然后把两个数组的左边合并成一个left_part数组,后边合并成一个right_part,然后只要保证一下条件
就能保证两个数组合并,并且排序以后的中位数就是
为了满足这两个条件,我们只要保证以下条件,i为第一个数组的分隔位置,j为第二数组的分隔位置,m为第一个数组的长度,n为第二个数组的长度
最后循环的条件如下
js修改的代码如下
其实从效率来看,第一个解法和第二个解法,时间上面没有多大的区别,leetcode的测试的结果是第二个解法可能快20ms左右。