力扣刷题—第四题 寻找两个正序数组的中位数c语言
http://c.biancheng.net/c/if_else/
if else语句,C语言if else用法完全攻略
先复习一下if语句
二分法做的自己在co’de’block上跑一点问题没有,在力扣上编译不通过,来个大佬给我看看哭了
先附上正确答案链接
https://blog.csdn.net/fuyuande/article/details/97007200?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
int k;
double findk(int* nums1, int nums1Size, int* nums2, int nums2Size,int k);
if(nums1Size==0&&nums2Size==0)
{
double c;
c=0;
return c;
}
k=(nums1Size+nums2Size)%2;
if(k!=0)
{
k=(nums1Size+nums2Size)/2+1;
return findk(nums1,nums1Size, nums2, nums2Size,k);
}
else
{
k=(nums1Size+nums2Size)/2;
return (findk(nums1,nums1Size, nums2, nums2Size,k)+findk(nums1,nums1Size, nums2, nums2Size,k+1))/2;
}
}
double findk(int* nums1, int nums1Size, int* nums2, int nums2Size, int k)
{
int temp;
temp=k/2-1;
if(nums1Size==0)
{
return (double)(*(nums2+k-1));
}
else if(nums2Size==0)
{
return (double)(*(nums1+k-1));
}
else if(k==1)
{
if(*nums1<=*nums2)
{
return (double)(*nums1);
}
else
{
return (double)(*nums2);
}
}
else if(nums1Size<=k/2)
{
if(*(nums2+temp)<=*(nums1+nums1Size-1))
{
nums2=nums2+temp+1;
k=k-temp-1;
nums2Size=nums2Size-temp-1;
findk(nums1,nums1Size,nums2,nums2Size,k);
}
else
{
k=k-nums1Size;
nums1Size=0;
findk(nums1,nums1Size, nums2,nums2Size,k);
}
}
else if(nums2Size<=k/2)
{
if(*(nums1+temp)<=*(nums2+nums2Size-1))
{
nums1=nums1+temp+1;
k=k-temp-1;
nums1Size=nums1Size-temp-1;
findk(nums1,nums1Size,nums2,nums2Size,k);
}
else
{
k=k-nums2Size;
nums2Size=0;
findk(nums1,nums1Size, nums2,nums2Size,k);
}
}
else if(k>1&&nums2Size>k/2&&nums1Size>k/2)
{
if(*(nums1+temp)<=*(nums2+temp))
{
nums1+=temp+1;
k=k-temp-1;
nums1Size=nums1Size-temp-1;
findk(nums1,nums1Size,nums2,nums2Size,k);
}
else
{
nums2+=temp+1;
k=k-temp-1;
nums2Size=nums2Size-temp-1;
findk(nums1,nums1Size, nums2,nums2Size,k);
}
}
}