Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 购买玩具的最高时限_Javascript_Algorithm - Fatal编程技术网

Javascript 购买玩具的最高时限

Javascript 购买玩具的最高时限,javascript,algorithm,Javascript,Algorithm,所以,是的,我有一个家庭作业类的问题,我已经解决了,但在测试用例中不断出现超时错误,我不知道为什么 你需要为你侄子的生日买玩具。但是你只有有限的钱。然而,你想为你的侄子买尽可能多的独特玩具。编写一个函数,返回您可以购买的唯一玩具的最大数量 函数的参数是整数数组成本(包含每个玩具的成本)和整数预算(可以花费的最大金额) 返回表示您可以购买的唯一玩具的最大数量的整数 约束条件 如果N是玩具的数量,K是预算。。。 1为什么不简单地排序和迭代 function maxPurchasedToys (cos

所以,是的,我有一个家庭作业类的问题,我已经解决了,但在测试用例中不断出现超时错误,我不知道为什么

你需要为你侄子的生日买玩具。但是你只有有限的钱。然而,你想为你的侄子买尽可能多的独特玩具。编写一个函数,返回您可以购买的唯一玩具的最大数量

函数的参数是整数数组成本(包含每个玩具的成本)和整数预算(可以花费的最大金额)

返回表示您可以购买的唯一玩具的最大数量的整数

约束条件

如果N是玩具的数量,K是预算。。。
1为什么不简单地排序和迭代

function maxPurchasedToys (costs, budget) {
    var i = 0, sum = 0, count = 0,
        l = costs.length;

    costs.sort(function (a, b) { return a - b });

    while ( i < l ) {
        if ( budget >= sum + costs[i] ) {
            sum = sum + costs[i];
            count++;
            i++;
        } else {
            break;
        }
    }

    return count;
}

这里有一把小提琴:

你可以尝试另一种方法,比如排序你的成本数组升序,看看你能在该数组中获得多少收益

函数maxPurchasedToys(成本、预算){
排序(函数(a,b){返回a-b});
计数=0;
金钱=预算;
对于(i=0;i成本[i]){
金钱-=成本[i];
计数++;
}
否则{
打破
}
}
返回计数;
}

哪种情况会让您超时?您可能需要将超时设置得更高,因为这些问题实际上可能需要一段时间:我还不知道您的代码出了什么问题。但无论如何,这可能会有所帮助:调用maxPurchasedToys([25,25],50])会使它在循环时无限大。另一方面,maxPurchasedToys([20,25],50])不会导致无限循环。现在太晚了@谢天谢地
function maxPurchasedToys (costs, budget) {
    var i = 0, sum = 0, count = 0,
        l = costs.length;

    costs.sort(function (a, b) { return a - b });

    while ( i < l ) {
        if ( budget >= sum + costs[i] ) {
            sum = sum + costs[i];
            count++;
            i++;
        } else {
            break;
        }
    }

    return count;
}
function maxPurchasedToys (costs, budget) {
    var sum = 0, count = 0;
    costs.sort(function (a, b) { return a - b }).some(function (cost) {
        if ( budget >= sum + cost ) {
            sum = sum + cost;
            count++;
        } else {
            return true;
        }
    });

    return count;
}
function maxPurchasedToys (costs, budget) {
    costs.sort(function(a,b){return a-b});
    count = 0;
    money = budget;
    for (i=0; i<costs.length(); i++){
        if (money > costs[i]){
            money -= costs[i];
            count ++;
        }
        else{
            break;
        }
    }
    return count;
}