860. 柠檬水找零
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
if (bills[0] > 5) return false;
vector<int> changes(3, 0);
//初始化零钱的数量为3个0,即5元、10元、20元各0张
for (int i = 0; i < bills.size(); i++) {
if (bills[i] == 5) changes[0]++;
if (bills[i] == 10) {
changes[1]++;
changes[0]--;
if (changes[0] < 0) return false;
}
if (bills[i] == 20) {
if (changes[1] > 0 && changes[0] > 0) {
changes[2]++;
changes[0]--;
if (changes[0] < 0) return false;
changes[1]--;
if (changes[1] < 0) return false;
}
else if (changes[0] >= 3) {
changes[0] -= 3;
}
else return false;
}
}
return true;
}
};