题目

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。

顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。

每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。

注意,一开始你手头没有任何零钱。

如果你能给每位顾客正确找零,返回 true ,否则返回 false 。

题解

没啥好说,遍历统计每次5元和10元的数量。

code

秒杀

  1. class Solution:
  2. def lemonadeChange(self, bills: List[int]) -> bool:
  3. countData = {
  4. 5: 0,
  5. 10: 0,
  6. }
  7. for b in bills:
  8. if b == 5:
  9. countData[5] += 1
  10. if b == 10:
  11. if countData[5] < 1:
  12. return False
  13. countData[5] -= 1
  14. countData[10] += 1
  15. if b == 20:
  16. if countData[10] < 1:
  17. if countData[5] < 3:
  18. return False
  19. countData[5] -= 3
  20. elif countData[5] < 1:
  21. return False
  22. else:
  23. countData[10] -= 1
  24. countData[5] -= 1
  25. return True