此教程使用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文章
2113瀏覽量
73742 -
代碼
+關注
關注
30文章
4808瀏覽量
68815 -
編寫
+關注
關注
0文章
29瀏覽量
8480
發布評論請先 登錄
相關推薦
兩個一維數組中相同元素的個數
各位大神,請教個問題,兩個一維數組,每個數組中約有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 語言數組的基本結構
的元素 求數組中元素的最短距離 求兩個有序數組的共同元素 求三個數組的共同元素 找出數組中唯一的重復元素 找出出現奇數次的元素 求
評論