Problem Statement
leetcode problem link
Brute Force [Accepted]
class Bank:
def __init__(self, balance: List[int]):
self.balance = balance
self.num_of_account = len(balance)
def transfer(self, account1: int, account2: int, money: int) -> bool:
if money == True:
return True
if account1 - 1 >= self.num_of_account or account2 - 1 >= self.num_of_account:
return False
if self.balance[account1 - 1] < money:
return False
self.balance[account1 - 1] -= money
self.balance[account2 - 1] += money
return True
def deposit(self, account: int, money: int) -> bool:
if money == 0:
return True
if account - 1 < self.num_of_account:
self.balance[account - 1] += money
return True
return False
def withdraw(self, account: int, money: int) -> bool:
if money == 0:
return True
if account - 1 < self.num_of_account and 1 <= self.balance[account - 1] and self.balance[account - 1] >= money:
self.balance[account - 1] -= money
return True
return 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)
Editorial
Approach: Simulation
class Bank:
def __init__(self, balance: List[int]):
self.balance = balance
def transfer(self, account1: int, account2: int, money: int) -> bool:
if (
account1 > len(self.balance)
or account2 > len(self.balance)
or self.balance[account1 - 1] < money
):
return False
self.balance[account1 - 1] -= money
self.balance[account2 - 1] += money
return True
def deposit(self, account: int, money: int) -> bool:
if account > len(self.balance):
return False
self.balance[account - 1] += money
return True
def withdraw(self, account: int, money: int) -> bool:
if account > len(self.balance) or self.balance[account - 1] < money:
return False
self.balance[account - 1] -= money
return True