LeetCode - Median of Two Sorted Arrays

Posted 朽木の半夏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode - Median of Two Sorted Arrays相关的知识,希望对你有一定的参考价值。

题目描述:找出两个有序数组合并之后的中位数。复杂度控制在log(N)

如:

nums1 = [1, 2]
nums2 = [3, 4]

The median is (2 + 3)/2 = 2.5

思路:

先转成logN内求两个数组第K大,二分即可实现。

在求 第(N+2)/2 是多少,以及 (N+1)/2是多少,即可。

 

AC代码:
int min(int a,int b){
    if(a<b)return a;
    return b;
}

int fk(int* n1,int n,int* m1 ,int m,int k){
    if (n < m){
        return fk(m1,m,n1,n,k);
    }
    if(m==0){
        return n1[k-1];
    }
    if(k==1){
        return min(n1[0],m1[0]);
    }
    int l = min(k/2,n);
    int r = min(k/2,m);
    if(n1[l-1] < m1[r-1]){
        return fk(n1+l,n-l,m1,m,k-l);
    }else{
        return fk(n1,n,m1+r,m-r,k-r);
    }
}

 

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {

    int l = (nums1Size + nums2Size+2)/2;
    int r = (nums1Size + nums2Size+1)/2;
    return (fk(nums1,nums1Size,nums2,nums2Size,l)+fk(nums1,nums1Size,nums2,nums2Size,r))/2.0;
}




























以上是关于LeetCode - Median of Two Sorted Arrays的主要内容,如果未能解决你的问题,请参考以下文章

#Leetcode# 4. Median of Two Sorted Arrays

LeetCode: Median of Two Sorted Arrays

Leetcode 4. Median of Two Sorted Arrays(二分)

LeetCode题解-----Median of Two Sorted Arrays

leetcode-4 Median of Two Sorted Arrays

4. 两个有序数组的中值 [leetcode 4: Median of Two Sorted Arrays]