lintcode 2 兩個排序陣列的中位數

2021-09-19 05:41:24 字數 891 閱讀 6310

中文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...