您的位置:首页 > 其它

Median of Two Sorted Arrays

2015-08-09 21:53 295 查看

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)).

思路:题目由于限制了时间复杂度的要求,因此不是很容易,否则一次快排即可解决,O(log (m+n))的思路来自于Median of Two Sorted Arrays,其中findKValue函数稍加修改。

class Solution {
public:
int findKValue(vector<int> a, vector<int> b, int k){
int m = a.size(), n = b.size();
if(m > n){
swap(a, b);
swap(m, n);
}
if(m == 0)
return b[k - 1];
if(k == 1)
return min(a[0], b[0]);
int pa = min(k / 2, m);
int pb = k - pa;
if(a[pa - 1] < b[pb - 1]){
a.erase(a.begin(),a.begin()+pa);
return findKValue(a, b, k - pa);
}
else if(a[pa - 1] > b[pb - 1]){
b.erase(b.begin(),b.begin()+pb);
return findKValue(a, b, k - pb);
}
else
return a[pa - 1];
}
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
int total = nums1.size() + nums2.size();
if(total & 0x1)
return findKValue(nums1, nums2, total / 2 + 1 );
else
return (findKValue(nums1, nums2, total / 2) + findKValue(nums1, nums2, total / 2 + 1)) / 2.0;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: