给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n))
(暂时未实现)。
示例 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
解答:
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int len = nums1.length + nums2.length;
int[] nums = new int[len];
int nums1Index = 0;
int nums2Index = 0;
for(int i = 0; i<=len - 1; i++){
if(nums1Index == nums1.length){
nums[i] = nums2[nums2Index];
nums2Index++;
}
else if(nums2Index == nums2.length){
nums[i] = nums1[nums1Index];
nums1Index++;
}
else if(nums1[nums1Index] < nums2[nums2Index]){
nums[i] = nums1[nums1Index];
nums1Index++;
}else{
nums[i] = nums2[nums2Index];
nums2Index++;
}
}
return len%2==0 ? (nums[len/2] + nums[len/2 - 1]) / 2.0 : nums[len/2];
}
}