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:先利用排序这一点直接得到
目标2:但是可以有更通用的办法求两个数组的第k大的数
目标1的代码:
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> nums;
int len1 = nums1.size();
int len2 = nums2.size();
int len = len1 + len2;
int index1 = 0, index2 = 0;
for(int i = 0; i < len; i++){
if(index1 < len1 && index2 < len2){
if(nums1[index1] < nums2[index2]){
nums.push_back(nums1[index1]);
index1++;
}else{
nums.push_back(nums2[index2]);
index2++;
}
}else if(index1 >= len1 && index2 < len2){
nums.push_back(nums2[index2]);
index2++;
}else if(index2 >= len2 && index1 < len1){
nums.push_back(nums1[index1]);
index1++;
}else{
nums.push_back(0);
}
}
if(len%2){
return (double)nums[(len-1)/2];
}else{
return (double)(nums[len/2-1] + nums[len/2])/2;
}
}
};
目标2的代码:哈哈,等等,有其他事情要做,等会研究