2043. 简易银行系统(中等)
这题不配是中等难度,过于简单了。
题目描述:
示例:
提示:
思路
怎么说呢,就是单纯的业务逻辑;以LeetCode的“尿性”,题目简单必有妖,需要格外注意边界溢出问题;比如:账户不存在、账户钱不够。(原以为一个中等难度的题,莫不是要考我并发场景,结果:就这!!)
已有的帐号为1 到 n,对账号有如下三种操作:
1)transfer 操作
- 如果要进行操作的帐号不在已有的帐号中,则交易无效。
- 如果账号account1 的余额小于money,那么交易无效。
- 交易有效时,将账号 account1 的余额减少 money,账号 account2 的余额增加 money。
2)deposit 操作
- 如果要进行操作的帐号不在已有的帐号中,则交易无效。
- 交易有效时,将账号 account 的余额增加 money。
- 如果要进行操作的帐号不在已有的帐号中,则易无效。
- 如果账号 account 的余额小于 money,那么交易无效。
- 交易有效时,我们将账号 account 的余额减少 money。
代码(Java)
class Bank {
public long[] balance;
public Bank(long[] balance) {
this.balance = balance;
}
public boolean transfer(int account1, int account2, long money) {
int accounts = balance.length;
if (account1 > accounts || account2 > accounts || balance[account1 - 1] < money) {
return false;
}
balance[account1 - 1] -= money;
balance[account2 - 1] += money;
return true;
}
public boolean deposit(int account, long money) {
int accounts = balance.length;
if (account > accounts) {
return false;
}
balance[account - 1] += money;
return true;
}
public boolean withdraw(int account, long money) {
int accounts = balance.length;
if (account > accounts || balance[account - 1] < money) {
return false;
}
balance[account - 1] -= money;
return true;
}
}