leetcode_860. 柠檬水找零

举报
悲恋花丶无心之人 发表于 2021/02/02 23:31:12 2021/02/02
【摘要】 目录 一、题目内容 二、解题思路 三、代码 一、题目内容 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。 每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。 注意,...

目录

一、题目内容

二、解题思路

三、代码


一、题目内容

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

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

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

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

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

示例 1:

输入:[5,5,5,10,20]
输出:true
解释:
前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。
第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。
由于所有客户都得到了正确的找零,所以我们输出 true。

示例 2:

输入:[5,5,10]
输出:true

示例 3:

输入:[10,10]
输出:false

示例 4:

输入:[5,5,10,10,20]
输出:false
解释:
前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。
对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。
对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。
由于不是每位顾客都得到了正确的找零,所以答案是 false。

提示:

0 <= bills.length <= 10000
bills[i] 不是 5 就是 10 或是 20 

二、解题思路

1.这道题需要知道的是10元需要找5元20元需要找1个10元1和5元,或者3个5元

2.那么10元找5元,5元的个数不能为0;

3.20元找15元:

(1)如果5元少于3个,则只能看看能不能找1个10元和1个5元

(2)如果5元足够的话,既可以找3个5元也可以找1个10元1个5元

三、代码

 

  
  1. class Solution:
  2. def lemonadeChange(self, bills: list) -> bool:
  3. bills_dict = {
  4. '5': 0,
  5. '10': 0,
  6. '20': 0,
  7. }
  8. for num in bills:
  9. if num == 5:
  10. bills_dict['5'] += 1
  11. elif num == 10:
  12. if bills_dict['5'] < 1:
  13. return False
  14. bills_dict['5'] -= 1
  15. bills_dict['10'] += 1
  16. elif num == 20:
  17. if bills_dict['5'] < 3:
  18. if bills_dict['10'] < 1 or bills_dict['5'] < 1:
  19. return False
  20. bills_dict['10'] -= 1
  21. bills_dict['5'] -= 1
  22. bills_dict['20'] += 1
  23. else:
  24. if bills_dict['10'] < 1:
  25. bills_dict['5'] -= 3
  26. bills_dict['20'] += 1
  27. else:
  28. bills_dict['10'] -= 1
  29. bills_dict['5'] -= 1
  30. bills_dict['20'] += 1
  31. return True
  32. if __name__ == '__main__':
  33. bills = [5,5,5,10,20]
  34. s = Solution()
  35. ans = s.lemonadeChange(bills)
  36. print(ans)

文章来源: nickhuang1996.blog.csdn.net,作者:悲恋花丶无心之人,版权归原作者所有,如需转载,请联系作者。

原文链接:nickhuang1996.blog.csdn.net/article/details/110946542

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。