=========================================================================
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
比较两个数组从小到大装入temp返回中位数(即最后一位或者两位)
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m=nums1.length,n=nums2.length;
int mid1=(m+n-1)/2,mid2=(m+n)/2;//奇数偶数一起处理
int temp=0,t1=0,t2=0;
int[] ans=new int[mid2+1];//设置必须的数组
//比较两个数组,小的放入数组
while(t1<m&&t2<n&&temp<=mid2){
if(nums1[t1]>nums2[t2]){
ans[temp++]=nums2[t2++];
}else{
ans[temp++]=nums1[t1++];
}
}
//一个数组过短另一个数组填充
if(t2==n){
while(temp<=mid2){
ans[temp++]=nums1[t1++];
}
}
else if(t1==m){
while(temp<=mid2){
ans[temp++]=nums2[t2++];
}
}
//计算mid1 mid2两个数的和除2
return (double)(ans[mid1]+ans[mid2])/2;
}
}