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
  • 返回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

更新於:2020年7月4日

656 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.