|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2020-2-9 22:00 编辑
今天的题目:
假设在你的柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,按账单 bills 支付的顺序一次购买一杯。
每位顾客只买一杯柠檬水并向你付 bills[a] 美元(bills[a] 只可能是 5、10 或 20),也就是说净交易是每位顾客向你支付 5 美元。你必须给每个顾客正确找零(如果可能)。
一开始你手头没有任何零钱。
如果你能给每位顾客正确找零则返回 True ,否则返回 False。
示例 1:
输入:bills = [5, 5, 5, 10, 20]
输出:True
解释:
前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
第 4 位顾客那里,我们收取一张 10 美元的钞票并找回 5 美元。
第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。
由于所有客户都得到了正确的找零,所以输出 True。 示例 2:
输入:bills = [5, 5, 10, 10, 20]
输出:False
解释:
前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。
对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。
对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。
由于最后一位顾客没有得到正确的找零,所以答案是 False。
 欢迎大家一起答题! 
本帖最后由 fan1993423 于 2020-2-11 16:34 编辑
- def fun328(lst):
- bill_dict={5:0,10:0}
- for i in lst:
- if i==5:
- bill_dict[i]+=1
- elif i==10:
- bill_dict[i]+=1
- bill_dict[5]-=1
- if bill_dict[5]<0:
- return False
- else:
- bill_dict[10]-=1
- bill_dict[5]-=1
- if bill_dict[10]<0 or bill_dict[5]<0:
- bill_dict[10]+=1
- bill_dict[5]-=2
- if bill_dict[5]<0:return False
- return True
复制代码
无脑解的,因为只有5,10,20这几种面值,如果面值多了,应该不能无脑解
|
|