Problem
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 from 1
to n
. The initial balance of each account is stored in a 0-indexed integer array balance
, with the (i + 1)th
account having an initial balance of balance[i]
.
Execute all the valid transactions. A transaction is valid if:
- The given account number(s) are between
1
andn
, and - The 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.
Examples
Example 1
|
|
Constraints
n == balance.length
1 <= n, account, account1, account2 <= 10^5
0 <= balance[i], money <= 1012
- At most
104
calls will be made to each functiontransfer
,deposit
,withdraw
.
Solution
Method 1 – Array Simulation
Intuition
Use an array to store balances. For each operation, check account validity and balance, then update accordingly.
Approach
- Store balances in an array (0-indexed, but accounts are 1-indexed).
- For each operation, check if account(s) are valid (1 <= account <= n).
- For withdraw/transfer, check if balance is sufficient.
- Update balances as needed and return True/False.
Code
|
|
|
|
|
|
Complexity
- ⏰ Time complexity:
O(1)
per operation. - 🧺 Space complexity:
O(n)
for the balances array.