力扣上的原题,用java写的代码
问题描述:
力扣上原题:860. 柠檬水找零
通过测试用例:
57 / 59
输入:
[5,5,10,10,20]
输出:
true
预期结果:
false
public class Solution {
public boolean lemonadeChange(int[] bills) {
if(bills[0] == 10 || bills[0] == 20){
return false;
}
int flag5 = 0;
int flag10 = 0;
for (int i=0;i<bills.length;i++){
if(bills[i] == 5){
flag5++;
}
if (bills[i] == 10 && flag5 !=0){
flag5--;
flag10++;
continue;
}
if (bills[i] == 10 && flag5 ==0){
return false;
}
if (bills[i] == 20 ){
if(flag10 != 0){
if(flag5 !=0) {
flag10--;
flag5--;
}
}
else {
if (flag5 >= 3){
flag5 = flag5-3;
}
else return false;
}
}
}
return true;
}
}
我调试到
if为true,应该执行了语句
if (bills[i] == 10 && flag5 !=0){
flag5--;
flag10++;
continue;
但是却直接跳过执行下一条了,为什么?
答
这个语句应该是false的,因为此时i=1, 但不知道后面为什么显示true;
if (bills[i] == 10 && flag5 !=0){
flag5--;
flag10++;
continue;
用例之所以错失因为
if (bills[i] == 20 ){
if(flag10 != 0){
if(flag5 !=0) {
flag10--;
flag5--;
}
}
中 flag5 为0需返回false,即
if (bills[i] == 20 ){
if(flag10 != 0){
if(flag5 !=0) {
flag10--;
flag5--;
}
else return false;
}
答
你那个bills[i]下面那里显示不是等于5吗?不等于10肯定不进去啊