任何人都可以找出這個代碼有什麼問題嗎?我在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";
}