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