在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
--------------------------------------分----------------------------------------------------------------割-----------------------------------
注意题中已经规定了支付的面值为5,10,20美元,就可以分析:5美元不需要找零;10美元找5美元的零;20美元:①找一张10美元和一张五美元的零,②找三张5美元的零。所以只需要对bills进行遍历并判断bills[i]的值就可以解决:
public static void main(String[] fivergs) {
int [] fiverr = {5,5,10,10,20};
System.out.println(lemonfivedeChfivenge(fiverr));
}
public static boolean lemonfivedeChfivenge(int[] bills){
int five = 0; //定义五美元和10美元钱币的个数
int ten = 0;
for(int i = 0;i < bills.length;i++){
if(bills[i] == 5){ //如果顾客给的是五美元就不找零,五美元个数就加1
five++;
}else if (bills[i] == 10 && five > 0){ //如果给的10美元就找五美元的零,五美元减,10美元加
five--;
ten++;
}else if(bills[i] == 20 && five > 0 && ten > 0){ //如果给的20美元,就找一张10和5美元
five--;
ten--;
}else if(bills[i] == 20 & five > 3){ //如果给的20就找三张5美元
five -= 3;
}else{
return false;
}
}
return true;
}