扒完网站代码之后怎么做模板,昆山市做网站,网页游戏人生重开模拟器,多店铺商城系统开源题目描述
简易银行系统 尝试过 中等 相关标签 相关企业 提示 你的任务是为一个很受欢迎的银行设计一款程序#xff0c;以自动化执行所有传入的交易#xff08;转账#xff0c;存款和取款#xff09;。银行共有 n 个账户#xff0c;编号从 1 到 n 。每个账号的初始余额存储…题目描述
简易银行系统 尝试过 中等 相关标签 相关企业 提示 你的任务是为一个很受欢迎的银行设计一款程序以自动化执行所有传入的交易转账存款和取款。银行共有 n 个账户编号从 1 到 n 。每个账号的初始余额存储在一个下标从 0 开始的整数数组 balance 中其中第 (i 1) 个账户的初始余额是 balance[i] 。
请你执行所有 有效的 交易。如果满足下面全部条件则交易 有效
指定的账户数量在 1 和 n 之间且 取款或者转账需要的钱的总数 小于或者等于 账户余额。 实现 Bank 类
Bank(long[] balance) 使用下标从 0 开始的整数数组 balance 初始化该对象。 boolean transfer(int account1, int account2, long money) 从编号为 account1 的账户向编号为 account2 的账户转帐 money 美元。如果交易成功返回 true 否则返回 false 。 boolean deposit(int account, long money) 向编号为 account 的账户存款 money 美元。如果交易成功返回 true 否则返回 false 。 boolean withdraw(int account, long money) 从编号为 account 的账户取款 money 美元。如果交易成功返回 true 否则返回 false 。
示例
输入 [“Bank”, “withdraw”, “transfer”, “deposit”, “transfer”, “withdraw”] [[[10, 100, 20, 50, 30]], [3, 10], [5, 1, 20], [5, 20], [3, 4, 15], [10, 50]] 输出 [null, true, true, true, false, false]
解释 Bank bank new Bank([10, 100, 20, 50, 30]); bank.withdraw(3, 10); // 返回 true 账户 3 的余额是 $20 所以可以取款 $10 。 // 账户 3 余额为 $20 - $10 $10 。 bank.transfer(5, 1, 20); // 返回 true 账户 5 的余额是 $30 所以可以转账 $20 。 // 账户 5 的余额为 $30 - $20 $10 账户 1 的余额为 $10 $20 $30 。 bank.deposit(5, 20); // 返回 true 可以向账户 5 存款 $20 。 // 账户 5 的余额为 $10 $20 $30 。 bank.transfer(3, 4, 15); // 返回 false 账户 3 的当前余额是 $10 。 // 所以无法转账 $15 。 bank.withdraw(10, 50); // 返回 false 交易无效因为账户 10 并不存在。
提示
n balance.length 1 n, account, account1, account2 105 0 balance[i], money 1012 transfer, deposit, withdraw 三个函数每个 最多调用 104 次
解题思路
已有的帐号为 1 到 n分别对三种操作进行分析
transfer 操作
如果要进行操作的帐号不在已有的帐号中即 account1n 或者 account2n那么交易无效。如果账号 account1 的余额小于 money那么交易无效。交易有效时我们将账号 account1 的余额减少 money账号 account2 的余额增加 money。
deposit 操作
如果要进行操作的帐号不在已有的帐号中即 accountn那么交易无效。交易有效时我们将账号 account 的余额增加 money。
withdraw 操作
如果要进行操作的帐号不在已有的帐号中即 accountn那么交易无效。如果账号 account 的余额小于 money那么交易无效。交易有效时我们将账号 account 的余额减少 money。
代码实现
public class Bank {Long[] balance;public Bank(long[] balance1) {this.balance new Long[balance1.length];int i0;for (long b:balance1) {balance[i] b;}}boolean transfer(int account1, int account2, long money) { //if(account1 balance.length || account2 balance.length) return false;if (balance[account1 - 1] money) {return false;}balance[account1 - 1] - money;balance[account2 - 1] money;return true;}boolean deposit(int account, long money) { // 同步if(account balance.length) return false;balance[account - 1] money;return true;}boolean withdraw(int account, long money) { // 异步if(account balance.length || balance[account - 1] money) return false;balance[account - 1] - money;return true;}
}