无法通过codewar的测试用例
问题描述:
新的“复仇者”电影刚刚发布!电影票房有很多人站在一条巨大的线上。他们每个人都有一张100美元,50美元或25美元的账单。 “复仇者”票价25美元。无法通过codewar的测试用例
Vasya目前是一名职员。他想把票卖给这条线上的每一个人。
Can Vasya可以向每个人出售一张门票,如果他最初没有钱,并且按照人们遵循的顺序严格销售门票,那么可以给予更改?
返回YES,如果Vasya可以向每个人出售机票并进行更改。否则返回NO。
例如,
Line.Tickets(new int[] {25, 25, 50}) // => YES
我能够通过10个测试用例中的11个,但对于1个测试用例,它显示我的结果是错误的。
说, 输入=>Line.Tickets(new int[] {25,50,25,100})
我的代码的输出=
NO
如果第一人有25 $ bill-> count25 = 1和count50 = 0,如果第二人有50美元的账单 - >计数50 = 1和计数25 = 0,如果第三方有25美元的账单 - >计数50 = 1和计数25 = 1,如果第四方有100美元的账单 - >计数50 = 0和计数25 = 0
public class Line {
public static String Tickets(int[] peopleInLine) {
int count25 = 0;
int count50 = 0;
for (int i = 0; i < peopleInLine.length; i++) {
if (peopleInLine[i] == 100) {
if (count25 == 1 && count50 > 0) {
count25 = count25 - 1;
count50 = count50 - 1;
}
if (count25 >= 3) {
count25 = count25 - 3;
} else {
return "NO";
}
}
if (peopleInLine[i] == 25) {
count25 = count25 + 1;
}
if (peopleInLine[i] == 50) {
count50 = count50 + 1;
count25 = count25 - 1;
if (count25 < 0) {
return "NO";
}
}
}
return "YES";
}
}
答
如果第一条if语句(if(count25==1&&count50>0)
)的计算结果为true
,则不应评估100美元钞票案例(if(count25>=3)
)中的第二条if语句。
使用else if
第二个条件:
if (peopleInLine[i] == 100) {
if(count25 == 1 && count50 > 0) {
count25--;
count50--;
} else if (count25 >= 3) {
count25-=3;
} else {
return "NO";
}
}
如果你让别人用100美元的钞票,你有2分25秒和1个50?你应该能够给他改变,但我没有看到这个选项。 – JackVanier
那么,当您发出** NO **响应时,关键变量的值是什么?我看不到试图去调试。 – Prune
@JackVanier,我在代码 – CryBaby