860. 柠檬水找零
1 题目描述
2 题目分析
本题考查简单的逻辑推理能力,首先整理一下问题:一杯柠檬水5元,顾客只可能付面值5、10、20的钱,那么我们就分别考虑一下这三种情况:
- 顾客付5元:不用找零,直接收下
- 顾客付10元:需要找零5元
- 顾客付20元:需要找零15元,这时候就有两种方案:
- 优先考虑找10+5这种组合的零钱
- 其次考虑5+5+5这种组合
从以上分析情况我们需要知道收益里面额为5和10的个数,然后对每位顾客付的钱分别进行相应操作即可,具体逻辑看代码。
3 代码
class Solution {
public boolean lemonadeChange(int[] bills) {
// 初始面额5和10的个数为0
int five = 0;
int ten = 0;
// 遍历数组
for (int bill : bills) {
// 1. 面额为5
if(bill == 5) five++;
// 2. 面额为10
if(bill == 10) {
if (five > 0) { // 能够找零
five--;
ten++;
}else {
return false;
}
}
// 3. 面额为20
if(bill == 20) {
if(five>0 && ten>0) { // 第一种方案
five--;
ten--;
}else if(five > 3) { // 第二种方案
five = five -3;
}else {
return false;
}
}
}
return true;
}
}