12.21 2014
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)).
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
vector<int> merge;
int i,j,k;
i=j=0;
for(k=0;k<m+n;k++){
if(i<m && j<n){
if(A[i]<=B[j]){
merge.push_back(A[i]);
i++;
} else {
merge.push_back(B[j]);
j++;
}
}
else if(i==m){
merge.push_back(B[j]);
j++;
}
else if(j==n){
merge.push_back(A[i]);
i++;
}
}
if((m+n)%2==0)
return (merge[(m+n)/2]+merge[(m+n)/2-1])/2.0;
else
return merge[(m+n)/2];
}
};
总结:
1. 主要出错在了整数除法的地方
2. 主要先用merge sort变成新vector,使用下标访问找出中位数。