介绍
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(m + n)
你可以假设 nums1 和 nums2 不会同时为空
源码
public static double getMedianSortedArrays(int[] nums1, int[] nums2) {
int length1 = nums1.length;
int length2 = nums2.length;
int lengthAll = length1 + length2;
int[] all = new int[lengthAll];
int i = 0, j = 0, k = 0;
int num = 0;
while (i < length1 && j < length2) {
if (nums1[i] < nums2[j]) {
all[k] = nums1[i];
i++;
k++;
num++;
} else {
all[k] = nums2[j];
j++;
k++;
num++;
}
}
while (i < length1) {
all[k] = nums1[i];
i++;
k++;
num++;
}
while (j < length2) {
all[k] = nums2[j];
j++;
k++;
num++;
}
double result;
if (lengthAll % 2 == 0) {
result = (all[lengthAll / 2 - 1] + all[lengthAll / 2]) * 1.0 / 2;
} else {
result = all[lengthAll / 2];
}
System.out.println("时间复杂度:" + num);
return result;
}