题目链接:https://leetcode.com/problems/median-of-two-sorted-arrays/description/
这道题解答貌似并没有什么难度,但是却有时间复杂度的限制。对于我这种算法战五渣来说能写出实现就已经很好了,所以我先写了个最简单的答案:
public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
int[] nums = new int[nums1.length + nums2.length];
int k = 0;
int i = 0, j = 0;
while (i < nums1.length && j < nums2.length) {
if (nums1[i] == nums2[j]) {
nums[k++] = nums1[i++];
nums[k++] = nums2[j++];
} else if (nums1[i] < nums2[j]) {
nums[k++] = nums1[i++];
} else {
nums[k++] = nums2[j++];
}
}
if (i == nums1.length) {
while (j < nums2.length) {
nums[k++] = nums2[j++];
}
} else {
while (i < nums1.length) {
nums[k++] = nums1[i++];
}
}
if (nums.length % 2 == 0) {
return (nums[nums.length / 2 - 1] + nums[nums.length / 2]) / 2.f;
} else {
return nums[nums.length / 2];
}
}
思路很简单,就是把两个数组合并为一个有序数组,然后再求中间值。
但是,这道题目的难度标识是“Hard”,所以事情并没有这么简单。。。于是,我去看了下官方答案。