https://leetcode.cn/problems/lemonade-change/
题目要求
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
给你一个整数数组 bills ,其中 bills[i] 是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
贪心
class Solution {
public boolean lemonadeChange(int[] bills) {
int Money10 = 0, Money5 = 0;
for (int bill : bills) {
if (bill == 5) {
Money5++;
continue;
}
if (bill == 10) {
Money10++;
if (Money5 == 0) return false;
else Money5--;
continue;
}
if (bill == 20) {
if (Money10 > 0) {
Money10--;
if (Money5 == 0) return false;
else Money5--;
} else if (Money5 >= 3) {
Money5 -= 3;
} else return false;
}
}
return true;
}
}
- 美元10只能给账单20找零,而美元5可以给账单10和账单20找零,美元5更万能!所以遇到账单20,优先消耗美元10,完成本次找零。