题目:有两个有序数组A[m],B[n];找到两个有序数组的中间值。时间复杂度不超过O(log(n+m))
分析:
这道题比较简单,将两个有序数组依次按序存放到另一个数组C[n+m],然后返回C的中间值
代码如下:
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
double C[m+n];
int i=0, j=0, k=0, t=0;
while(i<m && j<n){
if(A[i]<B[j]){
C[k++]=A[i++];
}else if(A[i]>B[j]){
C[k++]=B[j++];
}else{
C[k++]=A[i++];
C[k++]=B[j++];
}
}
while(i<m){
C[k++]=A[i++];
}
while(j<n){
C[k++]=B[j++];
}
if((n+m)%2 == 0){
return (C[(n+m)/2] + C[(n+m)/2 - 1])/2;
}else{
return C[(n+m)/2];
}
}
};