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:
1 and n, andImplement the Bank class:
Bank(long[] balance) Initializes the object with the 0-indexed integer array balance.boolean transfer(int account1, int account2, long money) Transfers money dollars from the account numbered account1 to the account numbered account2. Return true if the transaction was successful, false otherwise.boolean deposit(int account, long money) Deposit money dollars into the account numbered account. Return true if the transaction was successful, false otherwise.boolean withdraw(int account, long money) Withdraw money dollars from the account numbered account. Return true 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.length1 <= n, account, account1, account2 <= 1050 <= balance[i], money <= 1012104 calls will be made to each function transfer, deposit, withdraw.This approach uses a simple array to store the balance of each account starting from account 1 at index 0. All operations check for validity by ensuring accounts fit within valid range and ensuring sufficient funds for transactions before modifying the array accordingly.
This implementation provides a simple C structure to represent the bank. It uses a pointer to manage the balance array and account size. Each transaction checks if accounts are in range and if balance conditions are met, updating the balances accordingly. Memory is freed to avoid leaks.
C++
Java
Python
C#
JavaScript
Time Complexity: O(1) for each transaction since operations are basic arithmetic and index checks.
Space Complexity: O(1), as no extra space is used other than input and output.
In this approach, we can use a hashmap (or dictionary for Python, Map for Java, etc.) where keys are account numbers and values are their respective balance amounts. It allows for a more dynamic setup, even though it's less efficient than direct array access due to its average constant time complexity for reads and writes.
This Java implementation uses a HashMap to manage accounts and balances. Using a map allows dynamic addition or removal of accounts, but for this fixed scenario it's less efficient than array manipulation. This approach ensures that each transaction first checks the key's existence and balance sufficiency before applying changes.
Python
Time Complexity: O(1) on average for each transaction due to efficient map operations.
Space Complexity: O(n) to store balance data for each account, which could also adjust dynamically if needed.
| Approach | Complexity |
|---|---|
| Direct Array Manipulation | Time Complexity: O(1) for each transaction since operations are basic arithmetic and index checks. |
| HashMap for Account Balances | Time Complexity: O(1) on average for each transaction due to efficient map operations. |
How to NOT Fail a Technical Interview • Fireship • 1,704,672 views views
Watch 9 more video solutions →Practice Simple Bank System with our built-in code editor and test cases.
Practice on FleetCodePractice this problem
Open in Editor