Python中的柠檬汁兑换
假设有一个柠檬汁摊位,每杯柠檬汁售价5美元。现在顾客排队购买,每次只点一杯。
每位顾客只能买一杯柠檬汁,并且只能用5美元、10美元或20美元的钞票支付。我们必须为每位顾客提供正确的找零,以便净交易额为顾客支付5美元。一开始,我们没有任何找零。
我们必须检查我们是否能够为每位顾客提供正确的找零。
因此,如果输入类似[5,5,5,10,20],则输出为True,因为从前3位顾客那里,我们可以依次获得三张5美元的钞票。从第四位顾客那里,我们收取一张10美元的钞票并找回5美元。之后,从第五位顾客那里,我们找回一张10美元和一张5美元的钞票。由于所有顾客都得到了正确的找零,我们输出true。
为了解决这个问题,我们将遵循以下步骤:
- n5 := 0, n10 := 0, n20 := 0
- 对于bills中的每个i,执行:
- 如果i等于5,则
- n5 := n5 + 1
- 否则,如果i等于10,则
- n10 := n10 + 1
- 否则,n20 := n20 + 1
- 如果bills的长度 > 0 且n5等于0,则
- 返回False
- 如果i等于20且n10 > 0且n5 > 0,则
- n10 := n10 - 1
- n5 := n5 - 1
- 否则,如果i等于20且n10等于0且n5 < 3,则
- 返回False
- 否则,如果i等于20且n10等于0且n5 >= 3,则
- n5 := n5 -3
- 如果i等于10且n5 > 0,则
- n5 := n5 - 1
- 否则,如果i等于10且n5等于0,则
- 返回False
- 如果i等于5,则
- 返回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
广告