题目描述
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
代码
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int _5Num=0;
int _10Num=0;
if (bills[0] == 10 || bills[0] == 20 || bills[1] == 20) return false;
for (int bill:bills) {
if (bill == 5) ++_5Num;
else if (bill == 10) {
if (_5Num == 0) return false;
++_10Num;
--_5Num;
}
else if (bill == 20) {
if (_10Num > 0 && _5Num>0) {
--_10Num;
--_5Num;
}
else if(_5Num>=3){
_5Num -= 3;
}
else {
return false;
}
}
}
return true;
}
};