LeetCode-Median of Two Sorted Arrays

来源:互联网 发布:js多选日期插件 编辑:程序博客网 时间:2024/06/17 06:47

像我这种算法渣渣估计就会先排序跑过再说,,o(╯□╰)o。。
考虑时间复杂度,二分查找结合递归才是正道。代码如下,思路已懂,,路过可自行度度。。

double findKth(int a[],int m,int b[],int n,int k){    //always assume that m is equal or smaller than n    if(m>n)        return findKth(b,n,a,m,k);    if(m==0)        return b[k-1];    if(k==1)        return min(a[0],b[0]);    //divide k into two parts    int pa=min(k/2,m),pb=k-pa;    if(a[pa-1]<b[pb-1])        return findKth(a+pa,m-pa,b,n,k-pa);    else if(a[pa-1]>b[pb-1])        return findKth(a,m,b+pb,n-pb,k-pb);    else         return a[pa-1];}class Solution{    public:        double findMedianSortedArrays(int A[],int m,int B[],int n)        {            int total=m+n;            if(total%2!=0)                return findKth(A,m,B,n,total/2+1);            else                return (findKth(A,m,B,n,total/2)+findKth(A,m,B,n,total/2+1))/2.0;        }}