寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
思路1:直接暴力合编为一个数组,但是时间复杂度不满足。
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int n = nums1.length;
int m = nums2.length;
int[] a3 = new int[m + n];
int i = 0,j = 0,k = 0;
while(i<n&&j<m){
if(nums1[i]< nums2[j]){
a3[k] = nums1[i];
k++;
i++;
}else {
a3[k] = nums2[j];
k++;
j++;
}
}
if(i!=n){
for(int a=i;a<n;a++){
a3[k++]=nums1[a];
}
}else{
for(int b=j;b<m;b++){
a3[k++]=nums2[b];
}
}
if((n+m)%2==0) return (a3[(n+m)/2] + a3[(n+m)/2 - 1])/2.0;
else return a3[(n+m)/2];
}
}