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