此教程使用C++版本编写代码,如需其他版本,请自行修改,并在力扣网站中测试!
题目描述
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
示例1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2
示例2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
C++题目源码:
解决方案一:
//中位数的理解:
//有序序列
//总数是奇数
//1 2 3 4 5 5/2 =2
//总数是偶数
//1 2 3 4 5 6 6/2=3 (3+4)/2.0=3.5
//合并两个有序序列
//查找中位数即可
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
//合并得到一个有序序列
vector<int> result;
for(auto& v:nums1)
{
result.push_back(v);
}
for(auto& v:nums2)
{
result.push_back(v);
}
sort(result.begin(),result.end());
//分为奇数和偶数的情况输出中位数即可
int length=result.size();
if((length+1)%2==0) //奇数个长度
{
return result[length/2];
}
else
{
int pos=length/2;
return (result[pos-1]+result[pos])/2.0;
}
}
};
解决方案二:
class Solution {
public:
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2)
{
vector<int> result(nums1.size()+nums2.size());
if(nums1.size()==0)
{
copy(nums2.begin(),nums2.end(),result.begin());
}
else if(nums2.size()==0)
{
copy(nums1.begin(),nums1.end(),result.begin());
}
else
{
merge(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),result.begin());
}
int pos=result.size()/2;
return pos!=0&&result.size()%2==0?(result[pos-1]+result[pos])/2.0:result[pos];
}
};
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C++
+关注
关注
22文章
2110浏览量
73688 -
代码
+关注
关注
30文章
4791浏览量
68694 -
编写
+关注
关注
0文章
29浏览量
8472
发布评论请先 登录
相关推荐
两个一维数组中相同元素的个数
各位大神,请教个问题,两个一维数组,每个数组中约有6万个元素,元素都是唯一的,统计两个数组中相同元素个数,使用如下程序,速度较慢,有没有其他
发表于 04-07 17:27
两个一维数组,找出短的缺失的元素
一长一短两个一维数组,短的比长的缺失几个元素,怎么找到缺失的元素并用数组显示出来,比如【1,2,3,4,5】和【1,2,5】得出【3,4】,求大神解答,就如图所示
发表于 03-10 11:18
labview比较两个元素数值大小,并进行统计
labview 中怎么比较两个二位数组元素数值的大小,两个数组的数据长度是一样的,然后统计两个数组中元素不同的元素数量除数组的长度大小,输出
发表于 05-12 18:13
两个一维数组无法生成XY图
`两个一位数组,一直没办法生成XY图始终报错:由于数据类型(数值、字符串、数组和簇等)不匹配,将无法连线这些对象。显示即时帮助窗口可查看所需的数据类型。数据源的类型是簇 2 元素。数据接收端的类型是1D
发表于 03-10 22:39
有关中位数计算是什么
中位数是数理统计中一个重要的指标,它可以自动忽略数据极差带来的影响,
能够很好的评估数据,在数理统计中很常用。本文主要介绍在Python中和Mysql
中如何来求中位数,重点让大家掌握SQL计算
C 语言数组的基本结构
的元素 求数组中元素的最短距离 求两个有序数组的共同元素 求三个数组的共同元素 找出数组中唯一的重复元素 找出出现奇数次的元素 求
评论