题意描述:
在柠檬水摊上,每一杯柠檬水的售价为 5
美元。顾客排队购买你的产品,(按账单 bills
支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5
美元、10
美元或 20
美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5
美元。
注意,一开始你手头没有任何零钱。
给你一个整数数组 bills
,其中 bills[i]
是第 i
位顾客付的账。如果你能给每位顾客正确找零,返回 true
,否则返回 false
。
其中五美元、十美元找零方式比较固定,所以要考虑二十美元的找零即可,其中有两种方法,一种是一张五美元和一张十美元;第二种是三张五美元。
完整C++代码如下:
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five = 0;
int ten = 0;
int twe = 0;
if(bills[0] > 5) return false;
for(int i = 0; i < bills.size(); i++){
if(bills[i] == 5) five++;
if(bills[i] == 10){
if(five <= 0) return false;
ten++;
five--;
}
if(bills[i] == 20){
if(five > 0 && ten > 0){
five--;
ten--;
}
else if(five >= 3){
five -= 3;
}
else return false;
}
}
return true;
}
};