/**
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
示例 1:
输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2
**/
class Solution{
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m= nums1.length;
int n= nums2.length;
if(m+n== 1){
return m==0? nums2[0]:nums1[0];
}
int[] arr= merge(nums1,nums2);
System.out.println(Arrays.toString(arr));
if((m+n)%2 == 1){
return arr[(m+n)/2];
}else {
return (arr[(m+n)/2]+arr[((m+n)/2)-1])/2.00;
}
}
private int[] merge(int[] nums1, int[] nums2){
int [] arr= new int[nums1.length+nums2.length];
int idx1= 0;
int idx2= 0;
int i= 0;
while(idx1< nums1.length|| idx2< nums2.length){
if(idx1== nums1.length){
arr[i++] = nums2[idx2++];
continue;
}
if(idx2== nums2.length){
arr[i++] = nums1[idx1++];
continue;
}
if(nums1[idx1] < nums2[idx2]){
arr[i++] = nums1[idx1++];
}else {
arr[i++] = nums2[idx2++];
}
}
return arr;
}
}