题目:
解答:
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int len1=nums1.length,len2=nums2.length;
int[] newNums = new int[(len1+len2)/2+1]; //保存两张表中的前一半的元素
boolean odd=((len1+len2)%2==1) ? true : false; //判断两个数组中元素之和是否为奇数
int i=0,j=0,k=0, middleNum=(len1+len2)/2; //记录中间节点的位置
int n1,n2;
while(k<=middleNum)
{
n1=Integer.MAX_VALUE;
n2=Integer.MAX_VALUE;
if(i<len1)
{
n1=nums1[i];
}
if(j<len2)
{
n2=nums2[j];
}
if(n1<n2)
{
newNums[k]=nums1[i];
i++;
}
else
{
newNums[k]=nums2[j];
j++;
}
k++;
}
if(odd) //奇数
{
return newNums[k-1];
}
else
{
return (double)(newNums[k-1]+newNums[k-2])/2;
}
}
}