2017.06.07 一道美团点评面试编程题~

求两个升序数组的前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));

你可能感兴趣的:(2017.06.07 一道美团点评面试编程题~)