leetcode 40


能解决问题,但效率不咋地
/**
 * @param {number[]} candidates
 * @param {number} target
 * @return {number[][]}
 */
var combinationSum = function(candidates, target) {

    var arrl=[];
    arr=[];
    candidates.sort(function (a,b){return a>b});

    function search(candidates,target){

        function test11(a,b){
            if(a.length!=b.length){
                return false;

            }
            for(var i=0;i<a.length;i++){
                if(a[i]!=b[i]){
                    return false;
                }
            }
            return true;
        }

        if(target==0){
            arr1=arr.slice(0).sort();
            flag=0
            for(var i=0;i<arrl.length;i++){
                if(test11(arrl[i],arr1)==true){
                    flag=1;
                    break;
                }

            }

            if(flag==0)
                arrl.push(arr1);


            return;
        }
        n=candidates.length;
        for(var i=0;i<candidates.length;i++){

            if(   candidates[i]<=target) {
                arr.push(candidates[i]);
                candidates1=candidates.slice(0);
                candidates1.splice(0,i+1);
                search(candidates1, target - candidates[i]);
                arr.pop();

            }
        }
    }
    search(candidates,target);
    return arrl;
};
console.log(combinationSum([1,3,7],10));
console.log(combinationSum([10, 1, 2, 7, 6, 1, 5],8));
test=[1,2,3,4];
test.splice(0,1);
console.log(test);
console.log(combinationSum([5,4,5,1,5,3,1,4,5,5,4],10));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值