您的位置:首页 > 其它

算法课第十五周作业 | Median of Two Sorted Arrays

2017-06-04 18:23 267 查看
写在前面:

选取leetcode的第4题,使用排序的方法解题。

题意解读:

给定两个整数数组,两个数组的大小不一样,求这两个数组集合的中位数。

如果数组集合是偶数,则中位数是中间两个数的平均值,如果是奇数个,则中位数就是最中间的一个。

要求计算复杂度不要找过O(log(m+n)),其中m,n分布是两个数组的个数。

解题思路:

现将两个数组合并为一个,放进all里,用vector容器的sort函数进行排序,

sort函数采用的快速排序算法,是目前最快的排序算法。

接着判断(m+n)的奇偶性,返回相应的结果。

代码:

class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int> all(nums1.begin(), nums1.end());
all.insert(all.begin(),nums2.begin(), nums2.end());
sort(all.begin(), all.end());

double result;

if((nums1.size() + nums2.size()) % 2 == 1)
{
int r = (nums1.size() + nums2.size()) /2;
result = all[r];
}
else
{
result = (double)(all[(nums1.size() + nums2.size()) /2] + all[(nums1.size() + nums2.size()) /2-1]) / 2;
}

return result;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: