返回
LeetCode 2241. 编写 ATM 机代码(Python 解法)
后端
2023-09-15 16:09:35
在本文中,我们将详细讲解如何使用 Python 语言编写 ATM 机代码,并通过 LeetCode 2241 题目进行演示。我们不仅会介绍算法的基本思路,还会提供清晰的代码示例和详细的注释,以便您更好地理解并应用该算法。
算法思路:
- 首先,我们需要定义一个 ATM 机的类,其中包含必要的属性和方法。
- 然后,我们需要定义一些常量,这些常量代表不同面额的钞票。
- 在类的方法中,我们需要检查用户想要取出的金额是否有效,即是否为正整数且不超过 ATM 机的总金额。
- 如果用户想要取出的金额有效,我们需要计算出最少的钞票数量来满足取款请求。
- 最后,我们需要更新 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 元。
希望这篇文章对您有所帮助。如果您有任何问题,请随时提出。