题目链接
英文链接:https://leetcode.com/problems/lemonade-change/
中文链接:https://leetcode-cn.com/problems/lemonade-change/
题目详述
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
示例 1:
1 | 输入:[5,5,5,10,20] |
示例 2:
1 | 输入:[5,5,10] |
示例 3:
1 | 输入:[10,10] |
示例 4:
1 | 输入:[5,5,10,10,20] |
提示:
- 0 <= bills.length <= 10000
- bills[i] 不是 5 就是 10 或是 20
题目详解
典型的贪心算法。
- 因为找零的时候只会用到 5 元与 10 元,所以只用记录 5 元与 10 元的个数。
- 5 元不用找零,5 元个数加一。
- 10 元要找零 5 元,10 元个数加一。
- 20 元要找零 15 元,优先用 10 元,再用 5 元。
- 找零时不满足条件直接返回 false。
1 | public class LeetCode_00860 { |