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 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器