没有用很多博客提到的A,B两个数组每次砍一半的方法,直接归并后取值,遍历一次数组即可。
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number}
*/
var findMedianSortedArrays = function(nums1, nums2) {
var res_array = merge(nums1,nums2),
nums1_len = nums1.length,
nums2_len = nums2.length,
i = parseInt( (nums1_len+nums2_len-1)/2 ),
j = parseInt( (nums1_len+nums2_len)/2 );
return (res_array[i] + res_array[j]) / 2; //返回中间那个数
};
var merge = function(nums1, nums2){
var ret = [],
nums1_len = nums1.length,
nums2_len = nums2.length,
i = 0 ,
j = 0 ;
//归并两个数组,直到一个到头
while(i<nums1_len && j<nums2_len){
if(nums1[i] < nums2[j] ){
ret.push(nums1[i]);
i++;
}
else{
ret.push(nums2[j]);
j++;
}
}
//剩下的那个数组继续插入
if(i<nums1_len){
for(i;i<nums1_len;i++){
ret.push(nums1[i]);
}
}
if(j<nums2_len){
for(j;j<nums2_len;j++){
ret.push(nums2[j]);
}
}
//返回值
return ret;
};