class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int m = nums1.length;
int n = nums2.length;
int len = m + n;
int[] nums = new int[len];
double midVal = 0;
//nums1或nums2没有元素时的情况
if(m == 0){
if(n % 2 == 0){//偶数
midVal = (nums2[n/2-1] + nums2[n/2])/2.0;//除以2.0,不能是2
return midVal;
}
else{
midVal = nums2[n/2];
return midVal;
}
}
if(n == 0){
if(m % 2 == 0){//偶数
midVal = (nums1[m/2-1] + nums1[m/2])/2.0;//注意索引从0开始,中位数索引为m/2-1和m/2
return midVal;
}
else{
midVal = nums1[m/2];
return midVal;
}
}
int count = 0;
int i = 0;
int j = 0;
while(count != len){//有count++,i++,j++,故使用等号
//nums1已经全部添加到数组中
if(i == m){
while(j != n){
nums[count] = nums2[j];
count++;
j++;
}
break;
}
//nums2已经全部添加到数组中
if(j == n){
while(i != m){
nums[count] = nums1[i];
count++;
i++;
}
break;
}
//nums1和nums2都没有添加完
if(nums1[i] < nums2[j]){
nums[count++] = nums1[i++];
}
else{
nums[count++] = nums2[j++];
}
}
if(count % 2 == 0){//这里的count == length
midVal = (nums[count/2-1] + nums[count/2])/2.0;
}
else{
midVal = nums[count/2];
}
return midVal;
}
}
归纳:
先将两个数组合并,合并的时候需要考虑数组元素为0时的情况,合并时按照按照先小后大的原则(注意有一个数组添加完时的情况),然后再取合并数组的中位数。
569

被折叠的 条评论
为什么被折叠?



