解法一:归并排序
public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
if(nums1.length == 0){
if(nums2.length % 2 == 0){
return (nums2[nums2.length/2-1] + nums2[nums2.length/2])/2.0;
}else{
return nums2[nums2.length/2];
}
}
if(nums2.length == 0){
if(nums1.length % 2 == 0){
return (nums1[nums1.length/2-1] + nums1[nums1.length/2])/2.0;
}else{
return nums1[nums1.length/2];
}
}
int[] nums = new int[nums1.length + nums2.length];
int len1 = nums1.length;
int len2 = nums2.length;
int len = len1 + len2;
int i,j,k;
for(i = 0,j = 0,k = 0;i < len1 || j < len2;k++){
if(i >= len1){
nums[k] = nums2[j];
j++;
continue;
}
if(j >= len2){
nums[k] = nums1[i];
i++;
continue;
}
if(nums1[i] <= nums2[j]){
nums[k] = nums1[i];
i++;
continue;
}
if(nums1[i] > nums2[j]){
nums[k] = nums2[j];
j++;
continue;
}
}
return len%2 == 1 ? nums[len/2] : (nums[len/2 - 1]+nums[len/2])/2.0;
}
4/17/26About 3 min