求两个升序数组的前n大数
arr1 = [1,3,4,5,7,13] ,
arr2 = [1,7,9,10,13,15];
例如:前三大数 就是 从两个数组末尾元素开始比较,取出最大的三个数[15,13,13]
var arr1 = [1,3,4,5,7,13] ,arr2 = [1,7,9,10,13,15];
var len1 = arr1.length - 1,
len2 = arr2.length - 1,
nNumber = [],n = 4;
//参数 数组 - 数组的长度 - 变量n
function nMax(a1,a2,a1X,a2X,n) {
if(n > len1 + len2) return a1.concat(a2);
if(n > 0) {
if(a1[a1X] >= a2[a2X]) {
//a1递减
nNumber.push(a1[a1X]);
a1X--;
} else {
nNumber.push(a2[a2X]);
//a2递减
a2X--;
}
//同时目标数组的长度减一
n--;
//递归调用
nMax(a1,a2,a1X,a2X,n)
}
return nNumber;
}
console.log(nMax(arr1,arr2,len1,len2,n));
网友评论