题目:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。
public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
int result = 0;
int n1 = nums1.length;
int n2 = nums2.length;
int mid = (n1 + n2) / 2;
Boolean isEven = false;
if ((n1 + n2) % 2 == 0) {
isEven = true;
}
int i = 0, j = 0;
int num = 0;
int before = 0;
while (i < n1 && j < n2 && num <= mid) {
before = result;
if (nums1[i] <= nums2[j]) {
result = nums1[i++];
} else {
result = nums2[j++];
}
num++;
}
while (i < n1 && num <= mid) {
before = result;
result = nums1[i++];
num++;
}
while (j < n2 && num <= mid) {
before = result;
result = nums2[j++];
num++;
}
if (isEven) {
return ((float)result + before) / 2;
} else {
return Double.parseDouble(String.valueOf(result));
}
}