There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
这道题的暂时只会O(m+n)的解法
public class Solution {
public double findMedianSortedArrays(int A[], int B[]) {
if(A == null || B == null || A.length + B.length == 0) return 0;
int pa = 0;
int pb = 0;
double median = 0;
while(pa + pb != (A.length + B.length + 1) / 2){
int aValue = (pa == A.length)? Integer.MAX_VALUE: A[pa];
int bValue = (pb == B.length)? Integer.MAX_VALUE: B[pb];
if(aValue <= bValue){
median = A[pa];
pa++;
} else {
median = B[pb];
pb++;
}
}
if((A.length + B.length) % 2 == 1){
return median;
} else {
int aValue = (pa == A.length)? Integer.MAX_VALUE: A[pa];
int bValue = (pb == B.length)? Integer.MAX_VALUE: B[pb];
double median2 = (aValue <= bValue)? aValue: bValue;
return (median + median2) / 2;
}
}
}