Javascript 调试万圣节特卖:Hackerrank
我们的想法是应用线性递增折扣,直到达到Javascript 调试万圣节特卖:Hackerrank,javascript,algorithm,Javascript,Algorithm,我们的想法是应用线性递增折扣,直到达到m值,然后所有下一次购买都是m 看起来很简单,但我的方法没有涵盖一些边缘情况 示例: while(remaining > min && max > min) { count++ max-=d remaining -= max } 输入: while(remaining > min && max > min) { count++
m
值,然后所有下一次购买都是m
看起来很简单,但我的方法没有涵盖一些边缘情况
示例:
while(remaining > min && max > min) {
count++
max-=d
remaining -= max
}
输入:
while(remaining > min && max > min) {
count++
max-=d
remaining -= max
}
16,2,19981
输出:
while(remaining > min && max > min) {
count++
max-=d
remaining -= max
}
9918
预期输出:
while(remaining > min && max > min) {
count++
max-=d
remaining -= max
}
9917
我错过了什么
更好的方法也受到高度赞赏
//试穿(20,3,6,80)效果很好
函数howManyGames(p,d,m,s){
//返回您可以购买的游戏数量
如果(s最小值&最大值>最小值){
计数++
最大值-=d
剩余-=最大值
}
返回计数+(m!==0?数学楼层(剩余/m):0)
}
错误:
while(remaining > min && max > min) {
count++
max-=d
remaining -= max
}
max>min
执行此操作时,您不是在比较当前最大值和最小值,否则您是在比较上一次操作的最大值和最小值
此外,剩余值应始终大于最大值
如果max大于m,你就不能以m的价格购买物品
看看下面的代码,它通过了所有测试用例
//完成下面的“游戏数量”功能。
函数howManyGames(p,d,m,s){
//返回您可以购买的游戏数量
如果(最小值和最大值>最小值和剩余值>最大值){
计数++
剩余-=最大值
最大值-=d
}
如果(最大值>米)
返回计数
返回计数+(m!==0?数学楼层(剩余/m):0)
}