1 minute read

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