一、860. 柠檬水找零
1. 题目解析
这道题的核心在于模拟收银过程。每位顾客只能按顺序购买,且柠檬水固定 5 元。我们需要判断能否给每一位顾客正确找零。
有几个关键点需要注意:
- 初始时没有任何现金,如果第一位顾客给的不是 5 元,直接无法找零。
- 必须实时检查当前顾客是否能被满足,一旦失败立即返回 false,无需继续处理后续顾客。
- 顾客支付的面额只有 5 元、10 元和 20 元三种。
2. 算法原理

3. 代码实现
class Solution {
int[] change;
public boolean lemonadeChange(int[] bills) {
if (bills[0] != 5) {
return false;
}
change = new int[2]; // change[0] 存 5 元数量,change[1] 存 10 元数量
for (int i = 0; i < bills.length; i++) {
if (bills[i] == 5) {
change[0]++;
} else if (bills[i] == 10) {
if (change[0] != 0) {
change[0]--;
change[1]++;
} else {
return ;
}
} {
(change[] != && change[] != ) {
change[]--;
change[]--;
} (change[] >= ) {
change[] -= ;
} {
;
}
}
}
;
}
}



