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));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容