Median of Two Sorted Arrays

来源:互联网 发布:http请求 mac地址 编辑:程序博客网 时间:2024/06/06 19:34


There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).


#include<algorithm>using namespace std;class Solution {public:    double findMedianSortedArrays(int A[], int m, int B[], int n) {                int size = m + n;        if(size & 0x1){            return findKth(A, m, B, n, size/2+1);        }else{            return (findKth(A, m, B, n, size/2) + findKth(A, m, B, n, size/2+1))/2.0;        }                    }        int findKth(int A[], int m, int B[], int n, int k){                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]);        }                    int pa = min(m, k/2);        int 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];    }    };




0 0
原创粉丝点击