您的位置:首页 > 其它

Median of Two Sorted Arrays(沒完成別看)

2015-06-10 17:05 246 查看
here are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

作为一个算法新人,用最笨的方法写了个解决办法,居然过了,不得不佩服自己的毅力了.思路就是归并一下数组,新数组长度为M+N/2就够了.代码如下:`

(不推荐大家看我就不解释了~,下面再参考别人代码写下)

double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int num[nums1Size+nums2Size];
int i , j ;
double tar;
int k , sum ,mark =0;
int over = 0;
sum =nums1Size+nums2Size;
if(sum%2!=0)
{
k = sum/2;
mark = 1;
}
else
k =sum/2;
i = j = 0;
int n ;
if(nums1Size ==0)
{     if(mark==1)
{tar = nums2[k];
return(tar);
}
else{
tar=nums2[k]+nums2[k-1];
return(tar/2);
}
}
if(nums2Size==0)
{     if(mark==1)
{tar = nums1[k];
return(tar);
}
else{
tar=nums1[k]+nums1[k-1];
return(tar/2);
}
}
for( n = 0 ; n<=k; n++)
{
if(nums1[i]>nums2[j])
{// printf("num =nums2 :%d\n",nums2[j]);
num
=nums2[j];
if(j <nums2Size)
j++;
else{
over=2;
break;}
}
else
{// printf("num = nums1:%d\n",nums1[i]);
num
=nums1[i];
if( i <nums1Size)
i++;
else
{   over=1;
break;
}

}
}
//  printf("nums1 i = %d , nums2 j =%d , n = %d , k =%d ,mark =%d ,over = %d\n",i,j,n,k,mark,over);
//  printf("num[0]=%d %d %d",num[0],num[1],num[2]);
if( n>k)

{
if(mark ==1)
{tar = num[k];
return(tar);
}
else
{
tar=num[k]+num[k-1];
return(tar/2);
}
}
if( over == 1)
{
for( ; n<=k ; n++)
num
=nums2[j++];
if(mark==1)
tar=num[k];
else
tar =(double) (num[k]+num[k-1])/2 ;
return(tar);
}

for( ; n<=k ; n++)
num
=nums1[i++];
if(mark==1)
tar=num[k];
else
tar = (double)(num[k]+num[k-1])/2;
return(tar);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: