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