Median Of Two Sorted Arrays
第21天,尝试了一下hard
,结果是完全没做出来。。。从早上8点多到11点半,一直没能AC,最后只好看dicuss
中的解法了,然后理解还理解了很久。。。看了现在的我还不适合做hard
级别的。
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
因为没做出来,所以只能写写别人的思路了。
我们现在要找的是中位数,那么就有两种情况:
- 整体长度是奇数,那么中位数是序列中的数
- 整体长度是偶数,那么中位数是序列中两个数的平均值。
先考虑奇数的情况,因为是序列中的数,所以我们现在要求的就是在两个序列中第(size)/2 + 1
大的数。
现在问题转换成在两个序列中求第k个数:
不断的将k
减半,并把小的数从序列中排出,每次都能排出掉k/2
.
1 | double getKth(vector<int> &nums1,int beg1,int size1,vector<int> &nums2,int beg2,int size2,int k) { |
考虑偶数的情况,我们只要找出第(size)/2 + 1
和(size)/2
的大的数的平均值即可。
将两者统一一下:
1 | double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { |
恩,等下次感觉有能力做了,在来尝试一次!!!