There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3] nums2 = [2] The median is 2.0
Example 2:
nums1 = [1, 2] nums2 = [3, 4] The median is (2 + 3)/2 = 2.5
题意:在两个已排序的数组中找出中位数
要求O(log(m+n))
不过用归并数组O(m+n)也能AC了
上源码
public class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n = nums1.length;
int m = nums2.length;
int[] a = new int[m+n];
int i=0,j=0;
while(i<n&&j<m){
if(nums1[i]<nums2[j]){
a[i+j]=nums1[i];
i++;
}else{
a[i+j]=nums2[j];
j++;
}
}
if(i>=n){
while(j<m){
a[i+j]=nums2[j];
j++;
}
}
if(j>=m){
while(i<n){
a[i+j]=nums1[i];
i++;
}
}
if((m+n)%2==1) return 1.0*a[(m+n)/2];
else return (a[(m+n)/2-1]*1.0+a[(m+n)/2]*1.0)/2;
}
}