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