4.尋找兩個有序數組的中位數

一、思路:

要求時間複雜度爲O(M+N),採用雙指針法,將兩個有序數組歸併到另一個數組裏,返回新數組的中位數。

二、代碼(C++):

double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
	vector<int> merge;    //新數組
	int i = 0, j = 0;    //雙指針
	double res=0.0;
	while (i != nums1.size() && j != nums2.size())    //歸併過程
	{
		if (nums1[i] <= nums2[j])
			merge.push_back(nums1[i++]);
		else
			merge.push_back(nums2[j++]);
	}
	while (i != nums1.size())
		merge.push_back(nums1[i++]);
	while (j != nums2.size())
		merge.push_back(nums2[j++]);
	if (merge.size() % 2 == 1)
		return merge[merge.size() / 2];
	res = merge[merge.size() / 2] + merge[merge.size() / 2 - 1];
	return res/2;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章