做第三方seo优化网站,seo整体优化步骤怎么写,24小时自助平台业务下单,做网站都需要什么软件力扣网 4 寻找两个正序数组的中位数
题目描述
给定两个大小分别为 m 和 n 的正序#xff08;从小到大#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (mn)) 。 示例 1#xff1a;
输入#xff1a;nums1 [1,…力扣网 4 寻找两个正序数组的中位数
题目描述
给定两个大小分别为 m 和 n 的正序从小到大数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (mn)) 。 示例 1
输入nums1 [1,3], nums2 [2]
输出2.00000
解释合并数组 [1,2,3] 中位数 2示例 2
输入nums1 [1,2], nums2 [3,4]
输出2.50000
解释合并数组 [1,2,3,4] 中位数 (2 3) / 2 2.5
提示
nums1.length mnums2.length n0 m 10000 n 10001 m n 2000-106 nums1[i], nums2[i] 106
思路分析
最基本的思路将两个数组重新排序到一个新的数组里之后再求这个数组的中位数。
关于中位数的求法
根据元素个数决定如果个数为奇数中间那个就是中位数如果为偶数则中间的和前一个元素的平均数就是中位数。
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {int j0;int i0;int q0;int k0;int arr[nums1Sizenums2Size];while(inums1Size||jnums2Size){if(inums1Size){qnums2[j];//将要存放到新数组里的值先放到q里。}else if(jnums2Size){qnums1[i]; }else if(nums1[i]nums2[j]){qnums1[i];}else{qnums2[j];}arr[k]q;}int anums1Sizenums2Size;double n0;if(a1){return arr[a-1];}else{if(a%20){int ba/2;n(arr[b-1]arr[b])/2.0;//整除2.0转换为double型}else{int ba/2;narr[b]*1.0;}}return n;}