中文english
兩個排序的陣列a和b分別含有m和n個數,找到兩個排序陣列的中位數,要求時間複雜度應為o(log (m+n))。
樣例1
輸入:
a = [1,2,3,4,5,6]
b = [2,3,4,5]
輸出: 3.5
樣例2
輸入:
a = [1,2,3]
b = [4,5]
輸出: 3
時間複雜度為o(log n)
演算法1:最簡單的辦法就是把兩個陣列合併、排序,然後返回中位數即可,由於兩個陣列原本是有序的,因此可以用歸併排序中的merge步驟合併兩個陣列。演算法複雜度為o(m+n)
class solution
// 判斷小的陣列是否為空,為空的話,直接在另乙個陣列找第k個即可
if (a.size() == a_st)
// 當k = 1時,表示我們要找第乙個元素,只要比較兩個陣列的第乙個元素,返回較小的那個即可
if (k == 1)
int pa = min(a_st + k / 2, int(a.size())), pb = b_st + k - (pa -a_st);
if (a[pa - 1] < b[pb - 1])
else if (a[pa - 1] > b[pb - 1])
else
}double findmediansortedarrays(vector&a, vector&b)
else
return ret;
}};
lintcode兩個排序陣列的中位數
兩個排序陣列的中位數 兩個排序的陣列 a和b分別含有m和n個數,找到兩個排序陣列的中位數,要求時間複雜度應為o log m n 您在真實的面試中是否遇到過這個題?yes 樣例給出陣列a 1,2,3,4,5,6 b 2,3,4,5 中位數3.5 給出陣列a 1,2,3 b 4,5 中位數 3 挑戰 標...
lintcode 兩個排序陣列的中位數
描述 兩個排序的陣列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 class solution else if b.l...
165 合併兩個排序陣列
原題 您在真實的面試中是否遇到過這個題?是 標籤鍊錶 思路 逐個比較l1與l2的結點,將較小的掛載在結果鍊錶上。小技巧 可以建立乙個資料無效的結點作為標誌頭節點,返回其next。ac definition of singly linked list class listnode class solu...