这道题确实属于hard做了半天。。。leetcode果然不计算复杂度,先用merge在求中位数也通过了。。。复杂度O(n)。
double findm(int *num, int numSize) {
if (numSize == 0)
return 0;
if (numSize % 2 == 1) {
return(num[numSize/2]);
} else {
return(((double)num[numSize/2] + num[numSize/2 - 1])/2);
}
}
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int * haha;
int * L;
int * R;
int i, j;
int k;
haha = (int *)malloc(sizeof(int)*(nums1Size + nums2Size));
L = (int *)malloc(sizeof(int)*(nums1Size + 1));
R = (int *)malloc(sizeof(int)*(nums2Size + 1));
for(i = 0; i < nums1Size; i++) {
L[i] = nums1[i];
}
L[i] = INT_MAX;
for(i = 0; i < nums2Size; i++) {
R[i] = nums2[i];
}
R[i] = INT_MAX;
i = 0;
j = 0;
k = 0;
for(k = 0; k < nums1Size + nums2Size; k++) {
if (L[i] < R[j]) {
haha[k] = L[i];
i++;
} else {
haha[k] = R[j];
j++;
}
}
double re;
re = findm(haha, nums1Size + nums2Size);
return(re);
}