D17 LeetCode 2043.简易银行系统(中等)

一、题目

D17 LeetCode 2043.简易银行系统(中等)_第1张图片

D17 LeetCode 2043.简易银行系统(中等)_第2张图片

二、思路(自己)

  • 这道题跟前天的那个设计链表的题目相似,都是自己设计一个类,不过那个要难挺多,因为要求要O(1)的时间复杂度。
  • 挺简单的,就比详述自己的一些思路啥的,就普通设计类,也没有涉及多线程。
class Bank {
  List list= new ArrayList<>();
    int count;

    public Bank(long[] balance) {
        for(long l:balance){
            list.add(l);
        }
        count=balance.length;
    }

    public boolean transfer(int account1, int account2, long money) {
       if(account1>count||account2>count||list.get(account1-1)count) return false;
        else {
            list.set(account-1,list.get(account-1)+money);
            return true;
        }
    }

    public boolean withdraw(int account, long money) {
        if(account>count||money>list.get(account-1)) return false;
        else {
            list.set(account-1,list.get(account-1)-money);
            return true;
        }
    }
}
  • 不过值得提一嘴的是,在判断转账的时候,应该要把账户输入的合理性放在判断钱够不够之前,否则会造成数组越界,这是我第一次提交时候的疏忽!

D17 LeetCode 2043.简易银行系统(中等)_第3张图片

 三、题解(官方)

官方代码贴一下,听简单的

class Bank {
    long[] balance;

    public Bank(long[] balance) {
        this.balance = balance;
    }

    public boolean transfer(int account1, int account2, long money) {
        if (account1 > balance.length || account2 > balance.length || balance[account1 - 1] < money) {
            return false;
        }
        balance[account1 - 1] -= money;
        balance[account2 - 1] += money;
        return true;
    }

    public boolean deposit(int account, long money) {
        if (account > balance.length) {
            return false;
        }
        balance[account - 1] += money;
        return true;
    }

    public boolean withdraw(int account, long money) {
        if (account > balance.length || balance[account - 1] < money) {
            return false;
        }
        balance[account - 1] -= money;
        return true;
    }
}

你可能感兴趣的:(LeetCode,leetcode,算法,职场和发展)