LeetCode4:
给定两个大小为 m 和 n 的有序数组 nums1和 nums2。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
解法一:
将两个数组合并后找中位数。
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int len1 = nums1.length - 1;
int len2 = nums2.length - 1;
int temp[]= new int[len1 + len2 + 2];
int k = len1 + len2 + 1;
double res = 0;
while(len1 >= 0 && len2 >= 0){
if(nums1[len1] > nums2[len2]){
temp[k] = nums1[len1];
k--;
len1--;
}else{
temp[k] = nums2[len2];
k--;
len2--;
}
}
if(len1 < 0){
while(len2 >= 0){
temp[k] = nums2[len2];
k--;
len2--;
}
}else{
while(len1 >= 0){
temp[k] = nums1[len1];
k--;
len1--;
}
}
int len = temp.length;
if(len % 2 != 0){
res = temp[(len - 1) / 2];
}else{
res = (temp[len / 2] + temp[(len / 2) - 1])/2.0;
}
return res;
}
}
解法二: