返回

LeetCode 2241. 编写 ATM 机代码(Python 解法)

后端

在本文中,我们将详细讲解如何使用 Python 语言编写 ATM 机代码,并通过 LeetCode 2241 题目进行演示。我们不仅会介绍算法的基本思路,还会提供清晰的代码示例和详细的注释,以便您更好地理解并应用该算法。

算法思路:

  1. 首先,我们需要定义一个 ATM 机的类,其中包含必要的属性和方法。
  2. 然后,我们需要定义一些常量,这些常量代表不同面额的钞票。
  3. 在类的方法中,我们需要检查用户想要取出的金额是否有效,即是否为正整数且不超过 ATM 机的总金额。
  4. 如果用户想要取出的金额有效,我们需要计算出最少的钞票数量来满足取款请求。
  5. 最后,我们需要更新 ATM 机的总金额并返回取出的钞票数量。

Python 代码示例:

class ATM:
    def __init__(self, total_amount):
        self.total_amount = total_amount
        self.bills = [100, 50, 20, 10, 5, 1]

    def withdraw(self, amount):
        if amount <= 0 or amount > self.total_amount:
            return "Invalid amount"

        bills_count = {}
        for bill in self.bills:
            while amount >= bill:
                amount -= bill
                if bill not in bills_count:
                    bills_count[bill] = 0
                bills_count[bill] += 1

        self.total_amount -= amount
        return bills_count

atm = ATM(1000)
amount = 375
bills_count = atm.withdraw(amount)
print("Bills dispensed:")
for bill, count in bills_count.items():
    print(f"{bill}: {count}")

运行结果:

Bills dispensed:
100: 3
50: 1
20: 1
5: 1

如上所示,我们使用 1000 元的初始总金额创建了一个 ATM 实例,然后使用 375 元的取款金额调用了 withdraw 方法。结果显示,ATM 机成功地分配了 3 张 100 元钞票、1 张 50 元钞票、1 张 20 元钞票和 1 张 5 元钞票,总金额为 375 元。

希望这篇文章对您有所帮助。如果您有任何问题,请随时提出。