Python中的柠檬水更改
假设有一个柠檬水摊,每个柠檬水花费$5。现在,顾客正排着队从商店购买,然后一次订购。
每个客户只能购买一个柠檬水,并用5美元,10美元或20美元的账单付款。我们必须为每个客户提供正确的零钱,以便使交易净额是客户支付5美元。首先,我们手头没有任何变化。
我们必须检查是否可以为每个客户提供正确的更改。
因此,如果输入像[5,5,5,10,20],那么输出将为True,从前三个客户开始,我们可以依次获得三张5美元的钞票。从第四张开始,我们收集了一张10美元的钞票,还了5美元。之后,从第五个客户那儿,我们给了10美元的钞票和5美元的钞票。当所有客户得到正确的更改时,我们输出true。
为了解决这个问题,我们将遵循以下步骤-
n5:=0,n10:=0,n20:=0
对于账单中的每个i,
返回False
n5:=n5-1
n5:=n5-3
返回False
n10:=n10-1
n5:=n5-1
返回False
n10:=n10+1
n5:=n5+1
如果我与5相同
否则当我等于10时
否则n20:=n20+1
如果票据的大小>0并且n5等于0,则
如果我等于20并且n10>0和n5>0,则
否则,当i等于20且n10等于0且n5<3时,则
否则,当i等于20且n10等于0且n5>=3时,则
如果我等于10并且n5>0,则
否则,当我等于10且n5等于0时,则
返回True
让我们看下面的实现以更好地理解-
示例
class Solution:
def lemonadeChange(self, bills):
n5 = 0
n10 = 0
n20 = 0
for i in bills:
if i == 5:
n5 += 1
elif i == 10:
n10 += 1
else:
n20 += 1
if len(bills) > 0 and n5 == 0:
return(False)
if i == 20 and n10 > 0 and n5 > 0:
n10 -= 1
n5 -= 1
elif i == 20 and n10 == 0 and n5 < 3:
return(False)
elif i == 20 and n10 == 0 and n5 >= 3:
n5 = n5 -3
if i == 10 and n5 > 0:
n5 -= 1
elif i == 10 and n5 == 0:
return (False)
return(True)
ob = Solution()
print(ob.lemonadeChange([5,5,5,10,20]))输入值
[5,5,5,10,20]
输出结果
True