任何人都可以找出这个代码有什么问题吗?我在CodeWars上运行代码,并通过除了一个之外的每个测试...可悲的是,它并没有显示该输入是用于特定测试的,因此很难弄清楚。CodeWars挑战。哪个测试导致失败?
这里是挑战说明:
新的“复仇者”电影刚刚被释放!电影票房有很多人站在一条巨大的线上。他们每个人都有一张100美元,50美元或25美元的账单。 “复仇者”票价25美元。
Vasya目前是一名职员。他想把票卖给这条线上的每一个人。
Can Vasya可以向每个人出售一张门票,如果他最初没有钱,并且按照人们遵循的顺序严格销售门票,那么可以给予更改? 返回YES,如果Vasya可以向每个人出售门票并进行更改。否则返回NO。
我发现代码适用于所有测试,如果我交换检查amount50> = 1和amount25> = 1与amount25> = 3,但我不知道为什么这个工程。
function tickets(peopleInLine){
let amount25 = 0;
let amount50 = 0;
let amount100 = 0;
for(let i = 0; i < peopleInLine.length; i++){
if(peopleInLine[i] === 100){
if(amount25 >= 3){
amount25 -= 3;
amount100++;
}else if(amount25 >= 1 && amount50 >= 1){
amount25 -= 1;
amount50 -= 1;
amount100++;
}else{
return "NO";
}
}
if(peopleInLine[i] === 50){
if(amount25 >= 1){
amount25--;
amount50++;
} else {
return "NO";
}
}
if(peopleInLine[i] === 25){
amount25++;
}
}
return "YES";
}