采用分治的思想,求解两个数组第k小的数
比较两个数组第k/2小的数的大小,记为v1和v2,如果v1==v2,那么这个数一定就是第k的小的数。
如果v1 < v2,那么第k小的数,一定在v1的右边段中,v2的左边段中,这个数实际上是第k-na大的数。
同理如果v1 > v2,那么第k小的数,一定在v1的左边段,v2的右边断,
这道题目的难度比较大
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int n1 = nums1.size(), n2 = nums2.size();
int n = n1 + n2;
if(n%2){
return findKthSortedArrays(nums1, 0, n1 - 1, nums2, 0, n2 - 1, n / 2 + 1);
}else{
return (findKthSortedArrays(nums1, 0, n1 - 1, nums2, 0, n2 - 1, n / 2) + findKthSortedArrays(nums1, 0, n1 - 1, nums2, 0, n2 - 1, n / 2 + 1)) / 2.0;
}
}
double findKthSortedArrays(vector<int>& nums1, int start1, int end1,
vector<int>&