题目:
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2
思路:
将nums1 和 nums2合并为一个数组中,判断数组元素个数的奇偶性,分别返回对应的值。
代码:
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
double count;
for(vector<int>::iterator it = nums2.begin(); it != nums2.end(); it++){
nums1.push_back(*it);
}
sort(nums1.begin() , nums1.end());
if(nums1.size()%2){
count = nums1[nums1.size() >> 1];//若为奇数,将元素总个数右移。
}else if(nums1.size()%2 == 0){//若为偶数,求其中间的平均值.
count = (double)(nums1[nums1.size()/2 - 1] + nums1[nums1.size()/2])/2;
}
return count;
}
};