- 题目描述
解法:合并数组,排序,再根据奇数和偶数去中位数,时间复杂度O(n+m)
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
// 过滤空值
if (nums1.length == 0 && nums2.length == 0) {
return 0.0;
}
// 合并数组
int[] megers = new int[nums1.length + nums2.length];
for (int i = 0; i < nums1.length; i++) {
megers[i] = nums1[i];
}
for (int i = 0; i < nums2.length; i++) {
megers[nums1.length + i] = nums2[i];
}
// 排序
Arrays.sort(megers);
// 当数组长度为1,直接返回megers[0]
if (megers.length == 1) {
return megers[0];
}
double x = megers[megers.length / 2];
double y = megers[megers.length / 2 - 1];
if (megers.length % 2 == 1) {
// 奇数
return x;
} else {
// 偶数
return (x + y) / 2;
}
}
提交结果