1. 兩個有序數組,求其中位數
中位數概念, 對於有序數組,
如果長度爲奇數, 那麼中位數爲中間那個數
如果長度爲偶數,中位數爲中間兩個數的平均數
對於有序數組 A1, A2, .... A(m), .... A(N), 如果其中位數爲 A(m)
從 A1 ~ A(m-1) 中去掉 k 個數
從 A(m+1) ~ A(N) 中去掉 k 個數, 則新形成的數組中位數還是 A(m).
關鍵是去掉的時候從中位數兩邊去掉相同數目的數, 不能去掉中位數
幾種特殊的 case 處理:
1. [a, b] [c, d] 直接處理
m1 = (a < c) ? c : a;
m2 = (b < d) ? b : d;
2. [a], [bs, b(s+1), b(t), b(e) ]
如果 len(b) 爲奇數, b(t) = b[(s+e)/2]
if a > b(t) 中位數爲 b(t) , min[a , b(t+1)]
if a < b(t) 中位數爲 b(t) , max[a, b(t-1)]
3. [b, c] [.... al, a, ar .....] 第二個數組長度爲奇數,a 爲中間那個數字
a < b 時候, 中位數 min(b, ar)
a > c 時候, 中位數 max(c, al)
b< a < c, 中位數爲 a
4 [b, c] [ ... all, al, ar, arr ...] 第二個數組的長度爲偶數, 中位數有兩個
al < b, (b, c, ar, arr) 中最小的兩個
ar > c, (b, c, all, al) 中最大的兩個
al > b && ar < c , 中位數爲 al, ar