只看楼主 #每日一题#-基础-090找零
-
问题描述:
有一家甜筒店只卖一种甜筒,每一个甜筒的售价为5元。
顾客排队购买你的产品,(按账单支付的顺序)一次购买一个。
每位顾客只买一个甜筒,然后向你付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
阅读:1037 回复:3 2022-09-07 11:17:08
-
2022-09-07 16:08:00
-
运行结果:
2022-09-08 08:21:22
-
def isMoneyOK(money):
if money[0]!=5:
return False
else:
money1 = money[1:]
five_money=1
ten_money=0
for i in money1:
if i == 5: # 有支付 5元的
five_money += 1
elif i == 10: # 有支付10元的
five_money -= 1
ten_money += 1
else: # 有支付20元的
if ten_money >= 1:
ten_money -= 1
five_money -= 1
else:
five_money -= 3
if five_money < 0 or ten_money < 0: #看看是否是把5元的和10元的给减没了
return False
return True
if __name__=='__main__':
print(isMoneyOK([5,5,10,10,20]))
print(isMoneyOK([5,5,10]))
2022-09-10 10:30:40