4 兩個排序陣列的中位數

2021-09-02 19:01:59 字數 1167 閱讀 4794

給定兩個大小為 m 和 n 的有序陣列nums1nums2

請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為o(log (m+n))

你可以假設nums1nums2不同時為空。

示例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...