leetcode 寻找两个正序数组的中位数
采用归并排序的思想
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int[] result = merger(nums1,nums2);
int length = result.length;
//为偶数时返回前一个数和后一个数
if( length% 2 ==0)
return (result[length/2]+result[length/2-1])/2.0;
//为奇数直接返回
return result[length/2]/1.0;
}
//归并排序思想
public int[] merger(int[] nums1,int [] nums2){
int n =nums1.length;
int m =nums2.length;
if(n==0 && m!=0)
return nums2;
if(n!=0 && m==0)
return nums1;
int[] temp = new int[m+n];
int k = 0;
int l =0;
int r =0;
//从小到大排序
while(l<=n-1 && r<=m-1){
int result = nums1[l]<=nums2[r]?nums1[l++]:nums2[r++];
temp[k++] = result;
}
//左组若没有放完,则左组剩下的全大于右组,直接放最后面
while(l<=n-1){
temp[k++] = nums1[l++];
}
//同理
while(r<=m-1)
temp[k++] = nums2[r++];
//返回生成的新数组
return temp;
}
}



