Median of Two Sorted Arrays

来源:互联网 发布:表示公司的顶级域名 编辑:程序博客网 时间:2024/06/06 03:10

题目地址:点击打开链接

class Solution {public:    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {        int m=nums1.size();        int n=nums2.size();        int k=m+n;        if(k%2!=0)return run(nums1,nums2,0,m,0,n,(k+1)/2);        return (run(nums1,nums2,0,m,0,n,k/2)+run(nums1,nums2,0,m,0,n,k/2+1))/2.0;    }private:    double run(vector<int>& nums1, vector<int>& nums2,int st1,int n1,int st2,int n2,int k) {        if(n1>n2)return run(nums2,nums1,st2,n2,st1,n1,k);        if(n1==0)return nums2[st2+k-1];        if(k==1)return min(nums1[st1],nums2[st2]);        int k1=min(n1,k/2);        int k2=k-k1;        if(nums1[st1+k1-1]<nums2[st2+k2-1]){            return run(nums1,nums2,st1+k1,n1-k1,st2,n2,k-k1);        }else if(nums1[st1+k1-1]>nums2[st2+k2-1]){            return run(nums1,nums2,st1,n1,st2+k2,n2-k2,k-k2);        }else{            return nums1[st1+k1-1];        }    }};


0 0
原创粉丝点击