【题目描述】
给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n))
https://leetcode.cn/problems/median-of-two-sorted-arrays/description/
【示例】
【代码】admin
import java.util.*;
// 2022-12-17
class Solution {
public double findMedianSortedArrays(int[] num1, int[] num2) {
double res = 0d;
// 考虑特殊情况
if (num1.length == 0 && num2.length == 0){
return res;
} else if (num1.length == 1 && num2.length == 0){
return num1[0];
} else if (num1.length == 0 && num2.length == 1) {
return num2[0];
}
// 因为本身数组都是正序的,这里进行合并
int[] sum = new int[num1.length + num2.length];
System.arraycopy(num1, 0, sum, 0, num1.length);
System.arraycopy(num2, 0, sum, num1.length, num2.length);
// 合并后的数组进行排序
Arrays.sort(sum);
if (sum.length % 2 == 0){
// 如果是偶数, 则mid取中间2数的均值
int left = sum.length / 2;
int right = sum.length / 2 + 1;
res = (double) (sum[left - 1] + sum[right - 1]) / 2;
}else {
// 如果是奇数, 取中间值
int mid = sum.length / 2 + 1;
res = sum[mid - 1];
}
// // System.out.println(res);
return res;
}
}
public class Main{
public static void main(String[] args) {
int[] arr = {3};
int[] arr1 = {-2, -1};
new Solution().findMedianSortedArrays(arr, arr1);
}
}