a729276581gs 2016-02-06 14:49 采纳率: 0%
浏览 1423
已结题

leetcode Median of Two Sorted Arrays

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小的数字 哪里来的零啊

  • 写回答

2条回答

  • threenewbee 2016-02-06 15:10
    关注
        if(k==1)return 
            min(nums1[a+0],nums2[b+0]);
    
        调试了下,这里b=2,越界了。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 matlab求解平差
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现
  • ¥85 永磁型步进电机PID算法