在柠檬水摊上,每一杯柠檬水的售价为 5
美元。顾客排队购买你的产品,(按账单 bills
支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5
美元、10
美元或 20
美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5
美元。
注意,一开始你手头没有任何零钱。
给你一个整数数组 bills
,其中 bills[i]
是第 i
位顾客付的账。如果你能给每位顾客正确找零,返回 true
,否则返回 false
。
:这里对于20元找零,优先找10+5的而不是5+5+5的,5元钱找零更加万能,隐藏贪心
class Solution {
public boolean lemonadeChange(int[] bills) {
int[] bill = new int[3];
for(int i = 0; i < bills.length; i++){
if(bills[i] == 5) {
bill[0]++;
}else if(bills[i] == 10) {
bill[1]++;
if(bill[0] > 0) bill[0]--;
else return false;
}else{
bill[2]++;
if(bill[1] > 0 && bill[0] > 0) {
bill[0]--;
bill[1]--;
}else if(bill[0] > 2){
bill[0] -= 3;
}else return false;
}
}
return true;
}
}