各種面試題 兩個排序陣列的中位數

2021-06-18 10:45:18 字數 634 閱讀 6215

有兩個長度分別為n和m的有序陣列,計算這2個陣列中所有元素的中位數。

如果元素個數為偶數,那麼中位數為中間2個元素之和除以2(向下取整)。

樣例1:

arr1: [1, 4, 5]

arr2: [2, 3]

應該返回3。

樣例2:

arr1: [1, 7, 8]

arr2: [2, 3, 6]

應該返回4((3+6) / 2=4)。

提示:1. 使用o(log(m+n))的演算法; 2. 嘗試多種方法。

寫過好多回了,還是沒有一次寫對,哎,注意在getval裡對a.empty()時候的處理。

const int int_min=-100000000;

const int int_max=100000000;

int findmedian(vector& a,int l,int r,vector& b);

int getval(vector& a,int k);

int median(vector&arr1, vector&arr2)

int findmedian(vector& a,int l,int r,vector& b)

兩個排序陣列的中位數

求兩個排序陣列中位數,這道題是很有意思的一道題目,演算法導論中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...