题目

你的任务是为一个很受欢迎的银行设计一款程序,以自动化执行所有传入的交易(转账,存款和取款)。银行共有 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 <= 10^5
0 <= balance[i], money <= 10^12
transfer, deposit, withdraw 三个函数,每个 最多调用 10^4 次
来源:力扣(LeetCode)

解题思路

  这道题如果按照难度划分的话,我觉得应该放在简单题里。题目比较简单只需要做好相应的模拟即可,注意账户是否存在,账户里的钱是否够用。

class Bank:def __init__(self, balance: List[int]):self.balance=balanceself.n=len(balance)def transfer(self, account1: int, account2: int, money: int) -> bool:if 0<=account1-1<self.n and 0<=account2-1<self.n:if self.balance[account1-1]>=money:self.balance[account1-1]-=moneyself.balance[account2-1]+=money return Truereturn Falsereturn Falsedef deposit(self, account: int, money: int) -> bool:if 0<=account-1<self.n:self.balance[account-1]+=moneyreturn Truereturn Falsedef withdraw(self, account: int, money: int) -> bool:if 0<=account-1<self.n and self.balance[account-1]>=money:self.balance[account-1]-=moneyreturn Truereturn 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)

LeetCode中等题之简易银行系统相关推荐

  1. LeetCode中等题之TinyURL 的加密与解密

    题目 TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL h ...

  2. LeetCode中等题之区域和检索 - 数组可修改

    题目 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的nu ...

  3. LeetCode中等题之在排序数组中查找元素的第一个和最后一个位置

    题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你可以 ...

  4. LeetCode中等题之最优除法

    题目 给定一组正整数,相邻的整数之间将会进行浮点除法操作.例如, [2,3,4] -> 2 / 3 / 4 . 但是,你可以在任意位置添加任意数目的括号,来改变算数的优先级.你需要找出怎么添加括 ...

  5. LeetCode中等题之煎饼排序

    题目 给你一个整数数组 arr ,请使用 煎饼翻转 完成对数组的排序. 一次煎饼翻转的执行过程如下: 选择一个整数 k ,1 <= k <= arr.length 反转子数组 arr[0- ...

  6. LeetCode中等题之删除链表的中间节点

    题目 给你一个链表的头节点 head .删除 链表的 中间节点 ,并返回修改后的链表的头节点 head . 长度为 n 链表的中间节点是从头数起第 ⌊n / 2⌋ 个节点(下标从 0 开始),其中 ⌊ ...

  7. LeetCode中等题之特殊等价字符串组

    题目 给你一个字符串数组 words. 一步操作中,你可以交换字符串 words[i] 的任意两个偶数下标对应的字符或任意两个奇数下标对应的字符. 对两个字符串 words[i] 和 words[j] ...

  8. LeetCode中等题之二倍数对数组

    题目 给定一个长度为偶数的整数数组 arr,只有对 arr 进行重组后可以满足 "对于每个 0 <= i < len(arr) / 2,都有 arr[2 * i + 1] = 2 ...

  9. LeetCode中等题之两两交换链表中的节点

    题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 1: 输入:head = [1,2,3,4] 输出:[ ...

最新文章

  1. RDKit | 读取PDB文件并可视化
  2. NGLView 安装与配置-交互式分子结构和轨迹查看
  3. 数学仍然是人类的“火炬”
  4. 上行数据和下行数据什么意思_上行带宽和下行带宽什么意思?
  5. WORD页边距、行距、页码、页眉页脚
  6. tcp 组播_华为组播理论知识详解(二)
  7. 【渝粤教育】国家开放大学2018年春季 0674-22T财务管理 参考试题
  8. jira 查找issue_JIRA使用教程:高级搜索—字段参考4/4
  9. python程序员在公司都是做什么的?
  10. express+mysqle
  11. JDK神坑:JAVA中Calendar的月份Month少1
  12. 如何用JavaScript实现轮播图(幻灯片)的制作
  13. Python安装包及初步认知
  14. Flash Player教育版是什么?和普通版有何区别?
  15. 频繁gc是什么意思_经常听到的期货黄金gc是什么意思?
  16. 1450F The Struggling Contestant(贪心+思维)
  17. MIT6.031学习笔记:(一)code review
  18. windows+ffmpeg+qsv实现inter核显加速视频解码编码
  19. OpenCV用FAST、SURF、SIFT、BRISK、ORB等进行特征点提取与匹配
  20. 上链行动|数字经济3.0科创企业路演成功举办

热门文章

  1. pom文件中引入常用的maven仓库
  2. Go 知识点(17)— go 工具链 go test 使用
  3. 2022-2028中国工作服市场现状及未来发展趋势
  4. 2022-2028年中国酱腌菜行业市场研究及前瞻分析报告
  5. 机器学习常用术语词汇表
  6. TensorFlow指定使用GPU 多块gpu
  7. 电阻存储器为edge-AI提供了仿生架构
  8. 为什么edge AI是一个无需大脑的人
  9. 与现代传感器的接口:轮询ADC驱动程序
  10. 【动态规划】Part1