Example
Given A=[1,2,3,4,5,6]
and B=[2,3,4,5]
, the median is 3.5
.
Given A=[1,2,3]
and B=[4,5]
, the median is 3
.
分析:类似merge sort。
class Solution {
/**
* @param A: An integer array.
* @param B: An integer array.
* @return: a double whose format is *.5 or *.0
*/
public double findMedianSortedArrays(int[] A, int[] B) {
int[] res = new int[A.length + B.length];
int i = 0, j = 0, curr = 0;
while(i < A.length || j < B.length) {
if(i == A.length) {
res[curr++] = B[j++];
} else if(j == B.length) {
res[curr++] = A[i++];
} else {
if(A[i] > B[j]) {
res[curr++] = B[j++];
} else if(A[i] == B[j]) {
res[curr++] = A[i++];
res[curr++] = B[j++];
}else {
res[curr++] = A[i++];
}
}
}
if(curr % 2 == 0) {
return (res[(curr - 1) / 2] + res[curr / 2]) / 2.0;
} else {
return res[(curr - 1) / 2];
}
}
}