兩個排序的陣列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(int a, int b)
return (
findkth(a, 0, b, 0, len / 2) + findkth(a, 0, b, 0, len / 2 + 1)
) / 2.0;
}// find kth number of two sorted array
public static int findkth(int a, int a_start,
int b, int b_start,
int k)
if (b_start >= b.length)
if (k == 1)
int a_key = a_start + k / 2 - 1 < a.length
? a[a_start + k / 2 - 1]
: integer.max_value;
int b_key = b_start + k / 2 - 1 < b.length
? b[b_start + k / 2 - 1]
: integer.max_value;
if (a_key < b_key) else
}}
兩個排序陣列的中位數
求兩個排序陣列中位數,這道題是很有意思的一道題目,演算法導論中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 時間複雜度內求出,那麼陣...
兩個排序陣列的中位數
來自leetcode的兩個排序陣列的中位數 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2 請找出這兩個有序陣列的中位數。要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不同時為空。思路 合併陣列 對陣列排序 得到中位數 片.findmedi...