所以,是的,我有一个家庭作业类型的问题,我已经解决了,但在测试用例上不断给出超时错误,我不知道为什么。
你需要为侄子的生日买玩具。但你只有有限的钱。但是,您想为您的侄子购买尽可能多的独特玩具。编写一个函数,返回您可以购买的最大独特玩具数量。
函数的参数是整数数组成本,其中包含每个玩具的成本和整数预算,即您可以花费的最大金额。
返回代表您可以购买的最大独特玩具数量的整数
约束
如果 N 是玩具的数量,K 是预算... 1<=N<=105 1<=K<=109 1<=任何玩具的价格<=109
样本输入
成本:{1、12、5、111、200、1000、10} 预算:50 样本返回值
4 解释
他最多只能买4个玩具。这些玩具的价格如下:1,12,5,10。
所以这就是我写的,它在 10 个测试用例上不断给出超时错误。我不知道为什么
function maxPurchasedToys(costs, budget) {
var costsLess=[];
var removeFromArray=function(arr, value){
for(i in arr){
if(arr[i]==value){
arr.splice(i,1);
break;
}
}
return costsLess;
}
//First let's get a new array consisting only of costs that are equal to or below the budget
costs.map(function(x){x<budget?costsLess.push(x):1;})
var sum=0;
costsLess.map(function(x){sum+=x;});//Get the sum of budget
while(sum>=budget){
var max=Math.max.apply( Math, costsLess );
costsLess=removeFromArray(costsLess,max);//Remove the biggest element to ensure that the costs fall within budget
sum=0;
costsLess.map(function(x){sum+=x;});//Get the new sum of budget
}
return costsLess.length;
}
我尝试了以下案例:原始测试案例,[5000,2000,20,200],50 等等。一切正常