給定兩個(gè)大小分別為 m 和 n 的正序(從小到大)數(shù)組 nums1 和 nums2奋蔚。請(qǐng)你找出并返回這兩個(gè)正序數(shù)組的 中位數(shù) 吕世。
示例 :
輸入:nums1 = [1,2], nums2 = [3,4]
輸出:2.50000
解釋:合并數(shù)組 = [1,2,3,4] 秩命,中位數(shù) (2 + 3) / 2 = 2.5
思路:合并之后排序,再找中位數(shù); 但是要注意int與double類(lèi)型轉(zhuǎn)換的問(wèn)題跑芳。
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
vector<int>nums; //存儲(chǔ)nums1和nums2的合并數(shù)組
for(int i=0; i<nums1.size(); i++)
nums.push_back(nums1[i]);
for(int j=0; j<nums2.size(); j++)
nums.push_back(nums2[j]);
sort(nums.begin(), nums.end()); //對(duì)合并數(shù)組進(jìn)行排序
int len = nums.size(); //獲取合并數(shù)組的長(zhǎng)度
if(0 == len) //長(zhǎng)度為0突照,說(shuō)明為空帮非,輸出0.00000
return 0.00000;
if(len%2 == 0) //長(zhǎng)度為偶數(shù),返回值是中間兩數(shù)的平均數(shù)讹蘑,
return (double)(nums[len/2-1] + nums[len/2])/2; //此處前面要加double末盔,若不加double,比如2和3的平均數(shù)計(jì)算出來(lái)就是2而不是2.5
else //長(zhǎng)度為奇數(shù)座慰,返回值就是中間那個(gè)陨舱。返回值自動(dòng)是double類(lèi)型。
return nums[len/2];
}