您的位置:首页 > 其它

两个排序数组的中位数

2018-01-27 09:46 267 查看
两个排序的数组A和B分别含有m和n个数,找到两个排序数组的中位数,要求时间复杂度应为O(log (m+n))。

您在真实的面试中是否遇到过这个题? 

Yes

样例

给出数组A = [1,2,3,4,5,6] B = [2,3,4,5],中位数3.5
给出数组A = [1,2,3] B = [4,5],中位数 3
class Solution {

public:

    /*

     * @param A: An integer array

     * @param B: An integer array

     * @return: a double whose format is *.5 or *.0

     */

    double findMedianSortedArrays(vector<int> &A, vector<int> &B) {

        // write your code here

        for(int i=0;i<B.size();i++){

            A.push_back(B[i]);//将B数组中的元素给A;

        }

        sort(A.begin(), A.end());//对A数组进行排序

        double m,n;

        if(A.size()%2==0){//偶数个元素时

            m=A[A.size()/2];

            n=A[(A.size()/2)-1];

            return (m+n)/2.0;

        }else{//奇数个元素时

            return A[A.size()/2];

        }

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: