Median of Two Sorted Arrays(C++)

41 篇文章 0 订阅
36 篇文章 0 订阅
class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) 
    {
        int m=nums1.size(),n=nums2.size();
        if((m+n)%2==1)
            return findKth(nums1,nums2,(m+n+1)/2);
        else
            return (findKth(nums1,nums2,(m+n)/2)+findKth(nums1,nums2,(m+n)/2+1))/2.0;
    }
    int findKth(vector<int> nums1,vector<int> nums2,int k)
    {
        int m=nums1.size(),n=nums2.size();
        if(m>n)
            return findKth(nums2,nums1,k);
        if(m==0)
            return nums2[k-1];
        if(k==1)
            return min(nums1[0],nums2[0]);
        int i=min(m,k/2),j=min(n,k/2);
        if(nums1[i-1]>nums2[j-1])
            return findKth(nums1,vector<int>(nums2.begin()+j,nums2.end()),k-j);
        else
            return findKth(vector<int>(nums1.begin()+i,nums1.end()),nums2,k-i);
    }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值