9.2拼多多前端笔试问答题

1. 题目:给定一个包含N个整数的数组A,找出所有不一样的组合 i 、j、k ,使得 A[i]+A[j]+A[k]=0; 例如 A=[-1,0,1,2,-1,4],输出为[-1,0,1],[-1,-1,2]。请用javascript实现。
function sum(arr){
    var n = arr.length;
    var result = [];
    for(var i=0; i<n-2; i++){
        for(var j=1; j<n-1; j++){
            for(var k=2; k<n; k++){
                if(arr[i]+arr[j]+arr[k] == 0){
                    var temp = [arr[i], arr[j], arr[k]];
                    result.push(temp);
                }
            }
        }
    }
    //子数组排序
    result.forEach(function(item){
        return item.sort();
    });
    //二维数组的去重
    var hash = {};
    var newArr = [];
    for(var i=0,len=result.length; i<len; i++){
        if(!hash[result[i]]){
            newArr.push(result[i]);
            hash[result[i]] = true;
        }
    }
    // console.log(hash);
    console.log(newArr);  //[ [ -1, 0, 1 ], [ -1, -1, 2 ] ]
}
sum([-1,0,1,2,-1,4]); 
2. 写一个mul函数,使得方法如下:
console.log(mul(2)(3)(4)); //output:24
console.log(mul(4)(3)(4)); //output:48
实现
function mul(i){
    return function(j){
        return function(k){
            return i * j * k;
        }
    }
}

全部评论
楼主有面试通知了吗
点赞 回复 分享
发布于 2017-09-06 09:57
第一题用哈希表可以到平方吧。。
点赞 回复 分享
发布于 2017-09-03 23:35
第一题三重循环完事,要去重干哈
点赞 回复 分享
发布于 2017-09-03 23:14
这效率不高呢
点赞 回复 分享
发布于 2017-09-03 14:35
第一题好暴力。。
点赞 回复 分享
发布于 2017-09-03 12:06
手动柯里化不大好吧。。
点赞 回复 分享
发布于 2017-09-03 12:04

相关推荐

评论
2
18
分享

创作者周榜

更多
牛客网
牛客企业服务