在两个有序数组中寻找中位数,思想时归并排序的思想,将两个数组归并排序到一个数组中,提前算出中位数的个数减少循环次数
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number}
*/
var findMedianSortedArrays = function(nums1, nums2) {
var l1 = nums1.length, l2 = nums2.length,p,p1,p2,i1 = 0,i2 = 0,sum = 0,n1,n2,arr = [],result;
p = l1 + l2;
if(p % 2 === 0) {
p1 = p / 2;
p2 = p1 + 1;
} else {
p1 = (p + 1) / 2;
}
while((i1 < l1 || i2 < l2) && sum <= p1) {
if(nums1[i1] < nums2[i2] || nums2[i2] === undefined) {
arr.push(nums1[i1++]);
} else {
arr.push(nums2[i2++]);
}
sum = i1 + i2;
}
if(p2 === undefined) {
result = arr[p1 - 1];
} else {
result = (arr[p1 - 1] + arr[p2 - 1]) / 2;
}
return result;
};