LeetCode中等题之简易银行系统
題目
你的任務是為一個很受歡迎的銀行設計一款程序,以自動化執行所有傳入的交易(轉賬,存款和取款)。銀行共有 n 個賬戶,編號從 1 到 n 。每個賬號的初始余額存儲在一個下標從 0 開始的整數數組 balance 中,其中第 (i + 1) 個賬戶的初始余額是 balance[i] 。
請你執行所有 有效的 交易。如果滿足下面全部條件,則交易 有效 :
指定的賬戶數量在 1 和 n 之間,且
取款或者轉賬需要的錢的總數 小于或者等于 賬戶余額。
實現 Bank 類:
Bank(long[] balance) 使用下標從 0 開始的整數數組 balance 初始化該對象。
boolean transfer(int account1, int account2, long money) 從編號為 account1 的賬戶向編號為 account2 的賬戶轉帳 money 美元。如果交易成功,返回 true ,否則,返回 false 。
boolean deposit(int account, long money) 向編號為 account 的賬戶存款 money 美元。如果交易成功,返回 true ;否則,返回 false 。
boolean withdraw(int account, long money) 從編號為 account 的賬戶取款 money 美元。如果交易成功,返回 true ;否則,返回 false 。
示例:
輸入:
[“Bank”, “withdraw”, “transfer”, “deposit”, “transfer”, “withdraw”]
[[[10, 100, 20, 50, 30]], [3, 10], [5, 1, 20], [5, 20], [3, 4, 15], [10, 50]]
輸出:
[null, true, true, true, false, false]
解釋:
Bank bank = new Bank([10, 100, 20, 50, 30]);
bank.withdraw(3, 10); // 返回 true ,賬戶 3 的余額是 $20 ,所以可以取款 $10 。
// 賬戶 3 余額為 $20 - $10 = $10 。
bank.transfer(5, 1, 20); // 返回 true ,賬戶 5 的余額是 $30 ,所以可以轉賬 $20 。
// 賬戶 5 的余額為 $30 - $20 = $10 ,賬戶 1 的余額為 $10 + $20 = $30 。
bank.deposit(5, 20); // 返回 true ,可以向賬戶 5 存款 $20 。
// 賬戶 5 的余額為 $10 + $20 = $30 。
bank.transfer(3, 4, 15); // 返回 false ,賬戶 3 的當前余額是 $10 。
// 所以無法轉賬 $15 。
bank.withdraw(10, 50); // 返回 false ,交易無效,因為賬戶 10 并不存在。
提示:
n == balance.length
1 <= n, account, account1, account2 <= 10^5
0 <= balance[i], money <= 10^12
transfer, deposit, withdraw 三個函數,每個 最多調用 10^4 次
來源:力扣(LeetCode)
解題思路
??這道題如果按照難度劃分的話,我覺得應該放在簡單題里。題目比較簡單只需要做好相應的模擬即可,注意賬戶是否存在,賬戶里的錢是否夠用。
class Bank:def __init__(self, balance: List[int]):self.balance=balanceself.n=len(balance)def transfer(self, account1: int, account2: int, money: int) -> bool:if 0<=account1-1<self.n and 0<=account2-1<self.n:if self.balance[account1-1]>=money:self.balance[account1-1]-=moneyself.balance[account2-1]+=money return Truereturn Falsereturn Falsedef deposit(self, account: int, money: int) -> bool:if 0<=account-1<self.n:self.balance[account-1]+=moneyreturn Truereturn Falsedef withdraw(self, account: int, money: int) -> bool:if 0<=account-1<self.n and self.balance[account-1]>=money:self.balance[account-1]-=moneyreturn Truereturn False# Your Bank object will be instantiated and called as such:
# obj = Bank(balance)
# param_1 = obj.transfer(account1,account2,money)
# param_2 = obj.deposit(account,money)
# param_3 = obj.withdraw(account,money)
總結
以上是生活随笔為你收集整理的LeetCode中等题之简易银行系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之有多少小于当前数
- 下一篇: LeetCode中等题之两两交换链表中的