-
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]则中位数是 2.0
示例 2:nums1 = [1, 2]
nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -
代码思路:首先想到的就是将两个数组合并,然后再直接找到中位数。
-
class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int a=nums1.length+nums2.length; int[] num=new int[a]; int i,j,k=0; for(i=0,j=0;i<nums1.length&&j<nums2.length;k++){ if(nums1[i]<nums2[j]){ num[k]=nums1[i]; i++; } else if(nums1[i]>nums2[j]){ num[k]=nums2[j]; j++; } else if(nums1[i]==nums2[j]){ num[k]=nums1[i]; k++; num[k]=nums2[j]; i++; j++;} } if(i<nums1.length){ while(i<nums1.length){ num[k]=nums1[i]; k++; i++;} } if(j<nums2.length){ while(j<nums2.length){ num[k]=nums2[j]; k++; j++;} } if(a%2==0) return (double)(num[a/2]+num[a/2-1])/2; else return (double)num[a/2]; // return (double)(2+3)/2; } }
寻找两个有序数组的中位数
最新推荐文章于 2022-04-05 00:11:51 发布