问题描述:
给定两个大小为m和n的正序(从小到大)的数组num1,num2。请你找出并返回这两个数的中位数
示例一:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 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[] num = new int[nums1.length+nums2.length];
// 合并数组
for(int i=0;i<nums1.length;i++){
num[i] = nums1[i];
}
for(int i=0;i<nums2.length;i++){
num[nums1.length+i] = nums2[i];
}
// 数组排序
Arrays.sort(num);
// 根据奇偶返回值
if(num.length%2==0){
return (num[num.length/2]+num[num.length/2-1])/2.0;
}
return num[num.length/2];
}
}