給定兩個大小為 m 和 n 的有序陣列nums1
和nums2
。
請找出這兩個有序
陣列的中位數。要求演算法的時間複雜度為o(log (m+n))
。
你可以假設nums1
和nums2
不同時為空。
示例1:nums1=[1,3]
nums2=[2]
中位數是 2.0
示例2:思想主要參考官方nums1 = [1, 2]
nums2 = [3, 4]
中位數是 (2 + 3)/2 = 2.5
c++ code:
#include#include#include#includeusing namespace std;
class solution
if (m > n)
int imin = 0, imax = m, halflen = (m + n + 1) / 2;
while (imin <= imax)
else if (i > imin&&nums1[i - 1] > nums2[j])
else //i is perfect
else if (j == 0)
else
if ((m + n) % 2 == 1) return maxleft;
int minright = 0;
if (i == m)
else if (j == n)
else
return (maxleft+minright)/2.0;}}
}};void trimlefttrailingspaces(string &input) ));
}void trimrighttrailingspaces(string &input) ).base(), input.end());
}vectorstringtointegervector(string input)
return output;
}int main()
return 0;
}
兩個排序陣列的中位數
求兩個排序陣列中位數,這道題是很有意思的一道題目,演算法導論中9.3 8題,這題必須在o logn 的時間複雜度求解,否則肯定悲劇。這題有個關鍵的條件,那就是這兩個陣列長度相等 思路如下 陣列a 1,3,5,7,9 陣列b 2,4,6,8,10 首先取二者的中位數,在o 1 時間複雜度內求出,那麼陣...
兩個排序陣列的中位數
求兩個排序陣列中位數,這道題是很有意思的一道題目,演算法導論中9.3 8題,這題必須在o logn 的時間複雜度求解,否則肯定悲劇。這題有個關鍵的條件,那就是這兩個陣列長度相等 思路如下 陣列a 1,3,5,7,9 陣列b 2,4,6,8,10 首先取二者的中位數,在o 1 時間複雜度內求出,那麼陣...
兩個排序陣列的中位數
兩個排序的陣列a和b分別含有m和n個數,找到兩個排序陣列的中位數,要求時間複雜度應為o log m n 給出陣列a 1,2,3,4,5,6 b 2,3,4,5 中位數3.5 給出陣列a 1,2,3 b 4,5 中位數 3 public double findmediansortedarrays in...