Class Bank
-
- All Implemented Interfaces:
public final class Bank
2043 - Simple Bank System.
Medium
You have been tasked with writing a program for a popular bank that will automate all its incoming transactions (transfer, deposit, and withdraw). The bank has
n
accounts numbered from1
ton
. The initial balance of each account is stored in a 0-indexed integer arraybalance
, with the <code>(i + 1)<sup>th</sup></code> account having an initial balance ofbalance[i]
.Execute all the valid transactions. A transaction is valid if:
The given account number(s) are between
1
andn
, andThe amount of money withdrawn or transferred from is less than or equal to the balance of the account.
Implement the
Bank
class:Bank(long[] balance)
Initializes the object with the 0-indexed integer arraybalance
.boolean transfer(int account1, int account2, long money)
Transfersmoney
dollars from the account numberedaccount1
to the account numberedaccount2
. Returntrue
if the transaction was successful,false
otherwise.boolean deposit(int account, long money)
Depositmoney
dollars into the account numberedaccount
. Returntrue
if the transaction was successful,false
otherwise.boolean withdraw(int account, long money)
Withdrawmoney
dollars from the account numberedaccount
. Returntrue
if the transaction was successful,false
otherwise.
Example 1:
Input "Bank", "withdraw", "transfer", "deposit", "transfer", "withdraw" [[10, 100, 20, 50, 30], 3, 10, 5, 1, 20, 5, 20, 3, 4, 15, 10, 50]
Output: null, true, true, true, false, false
Explanation:
Bank bank = new Bank(10, 100, 20, 50, 30);
bank.withdraw(3, 10); // return true, account 3 has a balance of
$20, so it is valid to withdraw $
10. // Account 3 has$20 - $
10 = $10.bank.transfer(5, 1, 20); // return true, account 5 has a balance of
$30, so it is valid to transfer $
20. // Account 5 has$30 - $
20 =$10, and account 1 has $
10 +$20 = $
30.bank.deposit(5, 20); // return true, it is valid to deposit
$20 to account 5. // Account 5 has $
10 +$20 = $
30.bank.transfer(3, 4, 15); // return false, the current balance of account 3 is
$10, // so it is invalid to transfer $
15 from it.bank.withdraw(10, 50); // return false, it is invalid because account 10 does not exist.
Constraints:
n == balance.length
<code>1 <= n, account, account1, account2 <= 10<sup>5</sup></code>
<code>0 <= balancei, money <= 10<sup>12</sup></code>
At most <code>10<sup>4</sup></code> calls will be made to each function
transfer
,deposit
,withdraw
.