柠檬水找零
题目:在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
思路:1.如果支付了5美元,就得到一张5美元。
2.如果支付了10美元,就必须找回一张5美元。如果没有5美元的钞票,就返回false.
3.如果支付了20 美元钞票,就必须找回15美元
a.如果有一张10美元和一张5美元,就总会愿意这样找零,比用三张5美元更有利
b.否则,有三张5美元,也可以
c.否则,无法给出面值15元的零钱,就返回false
复杂度分析
时间复杂度:O(N),其中 N 是 bills 的长度。
空间复杂度:O(1)。