c_cpp 两个排序数组的中位数的.cpp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 两个排序数组的中位数的.cpp相关的知识,希望对你有一定的参考价值。
有两个大小为 m 和 n 的排序数组 nums1 和 nums2 。
请找出两个排序数组的中位数并且总的运行时间复杂度为 O(log (m+n)) 。
示例 1:
nums1 = [1, 3]
nums2 = [2]
中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
中位数是 (2 + 3)/2 = 2.5
vector<int> MySort(vector<int> &nums1,vector<int> &nums2)
{
vector<int> vec_re;
auto it1 = nums1.begin();
auto it2 = nums2.begin();
while(it1 != nums1.end() && it2 != nums2.end())
{
if(*it1 < *it2)
{
vec_re.push_back(*it1);
it1++;nums1
}
else
{
vec_re.push_back(*it2);
it2++;
}
}
if(it1 != nums1.end())
{
while(it1 != nums1.end())
{
vec_re.push_back(*it1);
it1++;
}
}
if(it2 != nums2.end())
{
while(it2 != nums2.end())
{
vec_re.push_back(*it2);
it2++;
}
}
return vec_re;
}
double findMedianSortedArrays(vector<int> &nums1,vector<int> &nums2)
{
int size1 = 0, size2 = 0;
size1 = nums1.size();
size2 = nums2.size();
int index = 0, median_index = 0, temp;
auto it_index = find(nums1.begin(), nums1.end(), nums2[0]);
index = ceil( (size1+size2)/2 ) - 1;
vector<int> vec_new = MySort(nums1, nums2);
index = ceil( (size1+size2)/2 );
if((size1+size2)%2)
{
return vec_new[index];
}
else {
return (double)(vec_new[index] + vec_new[index - 1])/2;
}
}
以上是关于c_cpp 两个排序数组的中位数的.cpp的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp GFG 2个排序数组的中位数
c_cpp 从两个给定排序数组的备用元素生成所有可能的排序数组
c_cpp 交集,两个排序数组的并集
c_cpp 从两个排序的数组中找到最接近的一对
c_cpp 从两个排序的数组中获取第k个最小元素。数组中的前k个
c_cpp 167.两个Sum II - 输入数组被排序 - DifficultyEasy - 2018.9.1