链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/description/
有两个大小为 m 和 n 的排序数组 nums1 和 nums2 。
请找出两个排序数组的中位数并且总的运行时间复杂度为 O(log (m+n)) 。
示例 1:
nums1 = [, ] nums2 = []
中位数是 2.0
示例 2:
nums1 = [, ] nums2 = [, ]
中位数是 (2 + 3)/2 = 2.5
分析
这道题很简单,题目已经说了两个数组的顺序已经是排序好了,所以我们直接用一个数组,然后将数组 nums1 和 nums2 的前面(nums1Size+nums2Size)/2个数据存进去,然后再将中位数return出来即可
代码如下(使用C方式)
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int s[nums1Size+nums2Size]; ,R=; int j=nums1Size+nums2Size; ;i<=(j/);) { if(L==nums1Size) //排序数组 nums1已经放置完了 { )) //直接放 nums2数组 s[i++]=nums2[R++]; } else if(R==nums2Size) //排序数组 nums2已经放置完了 { )) //直接放 nums1数组 s[i++]=nums1[L++]; } else { if(nums1[L]<nums2[R]) s[i++]=nums1[L++]; else s[i++]=nums2[R++]; } } //for(L=0;L<i;L++) // printf("%d ",s[L]); //printf("\n%d\n",i); ==) //奇数个,则只要最中间值 { ] ; } else { ]+s[i- ])/2.0; } }