class Solution {
public:
double findMedianSortedArrays(vector& nums1, vector& nums2) {
if(nums1.size()==0){
if(nums2.size()%2==0)return ((double)nums2[nums2.size()/2]+nums2[nums2.size()/2-1])/2.0;
else return nums2[nums2.size()/2];
}
if(nums2.size()==0){
if(nums1.size()%2==0)return ((double)nums1[nums1.size()/2]+nums1[nums1.size()/2-1])/2.0;
else return nums1[nums1.size()/2];
}
int k=(nums1.size()+nums2.size())/2;
int m1=kth(0,nums1.size(),0,nums2.size(),nums1,nums2,k+1);
if(nums1.size()+nums2.size()==0){
int m2=kth(0,nums1.size(),0,nums2.size(),nums1,nums2,k);
return (m1+m2)/2.0;
}
return m1;
}
int kth(int a,int m ,int b,int n,vector& nums1, vector& nums2,int k){
if(n>m)return kth(b,n,a,m,nums2,nums1,k);
if(k==1)return min(nums1[a+0],nums2[b+0]);
if(n==0)return nums1[a+k-1];
int j=min(n,k/2);
int i=k-j;
if(nums1[a+i-1]>nums2[b+j-1])return kth(a,i,b+j,n-j,nums1,nums2,k-j);
return kth(a+i,m-i,b,j,nums1,nums2,k-i);
}
};
我输入的测例【1,1】 【1,1】的返回值是0
我想不通啊 就说返回错误也不可能取到比1小的数字 哪里来的零啊