Leetcode Median of Two Sorted Arrays

这道题确实属于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);
}

猜你喜欢

转载自blog.csdn.net/xtydtc/article/details/76849653