2043. 簡易銀行系統

2043. 簡易銀行系統

你的任務是為一個很受歡迎的銀行設計一款程序,以自動化執行所有傳入的交易(轉賬,存款和取款)。銀行共有 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 并不存在。

解題思路

維護一個代表用戶余額的數組,對于轉賬,存款,取款操作,我們都需要對參數進行校驗,保證指定的賬戶數量在 1 和 n 之間,且取款或者轉賬需要的錢的總數 小于或者等于 賬戶余額。對于轉賬來說,可以看成從兩個不同的賬號分別進行取款和存款。

代碼

    class Bank {long[] balance;public Bank(long[] balance) {this.balance=balance;}public boolean transfer(int account1, int account2, long money) {if (!withdraw(account1,money))return false;if (!deposit(account2,money)){deposit(account1,money);return false;}return true;}public boolean deposit(int account, long money) {if (account-1<0||account-1>=balance.length)return false;balance[account-1]+=money;return true;}public boolean withdraw(int account, long money) {if (account-1<0||account-1>=balance.length)return false;if (money>balance[account-1])return false;balance[account-1]-=money;return true;}}/*** Your Bank object will be instantiated and called as such:* Bank obj = new Bank(balance);* boolean param_1 = obj.transfer(account1,account2,money);* boolean param_2 = obj.deposit(account,money);* boolean param_3 = obj.withdraw(account,money);*//*** Your Bank object will be instantiated and called as such:* Bank obj = new Bank(balance);* boolean param_1 = obj.transfer(account1,account2,money);* boolean param_2 = obj.deposit(account,money);* boolean param_3 = obj.withdraw(account,money);*/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/389937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389937.shtml
英文地址,請注明出處:http://en.pswp.cn/news/389937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

余弦相似度和歐氏距離_歐氏距離和余弦相似度

余弦相似度和歐氏距離Photo by Markus Winkler on UnsplashMarkus Winkler在Unsplash上拍攝的照片 This is a quick and straight to the point introduction to Euclidean distance and cosine similarity with a focus on NLP.這是對歐氏距離和余弦相似度的快速而直接的介紹&…

bzoj2152 聰聰可可

題目描述 聰聰和可可是兄弟倆&#xff0c;他們倆經常為了一些瑣事打起來&#xff0c;例如家中只剩下最后一根冰棍而兩人都想吃、兩個人都想玩兒電腦&#xff08;可是他們家只有一臺電腦&#xff09;……遇到這種問題&#xff0c;一般情況下石頭剪刀布就好了&#xff0c;可是他們…

七、 面向對象(二)

匿名類對象 創建的類的對象是匿名的。當我們只需要一次調用類的對象時&#xff0c;我們就可以考慮使用匿名的方式創建類的對象。特點是創建的匿名類的對象只能夠調用一次&#xff01; package day007;//圓的面積 class circle {double radius;public double getArea() {// TODO…

機器學習 客戶流失_通過機器學習預測流失

機器學習 客戶流失介紹 (Introduction) This article is part of a project for Udacity “Become a Data Scientist Nano Degree”. The Jupyter Notebook with the code for this project can be downloaded from GitHub.本文是Udacity“成為數據科學家納米學位”項目的一部分…

2044. 統計按位或能得到最大值的子集數目

2044. 統計按位或能得到最大值的子集數目 給你一個整數數組 nums &#xff0c;請你找出 nums 子集 按位或 可能得到的 最大值 &#xff0c;并返回按位或能得到最大值的 不同非空子集的數目 。 如果數組 a 可以由數組 b 刪除一些元素&#xff08;或不刪除&#xff09;得到&…

redis系列:分布式鎖

1 介紹 這篇博文講介紹如何一步步構建一個基于Redis的分布式鎖。會從最原始的版本開始&#xff0c;然后根據問題進行調整&#xff0c;最后完成一個較為合理的分布式鎖。 本篇文章會將分布式鎖的實現分為兩部分&#xff0c;一個是單機環境&#xff0c;另一個是集群環境下的Redis…

Qt中的坐標系統

轉載&#xff1a;原野追逐 Qt使用統一的坐標系統來定位窗口部件的位置和大小。 以屏幕的左上角為原點即(0, 0)點&#xff0c;從左向右為x軸正向&#xff0c;從上向下為y軸正向&#xff0c;這整個屏幕的坐標系統就用來定位頂層窗口&#xff1b; 此外&#xff0c;窗口內部也有自己…

預測股票價格 模型_建立有馬模型來預測股票價格

預測股票價格 模型前言 (Preface) If you are reading this, it’s most likely because you love to solve puzzles. I’m a very competitive person by nature. The Mt. Everest of puzzles, in my opinion, is trying to find excess returns through active trading in th…

Python 模塊 timedatetime

time & datetime 模塊 在平常的代碼中&#xff0c;我們常常需要與時間打交道。在Python中&#xff0c;與時間處理有關的模塊就包括&#xff1a;time&#xff0c;datetime,calendar(很少用&#xff0c;不講)&#xff0c;下面分別來介紹。 在開始之前&#xff0c;首先要說明幾…

大數模板Java

import java.util.*; import java.math.BigInteger; public class Main{public static void main(String args[]){Scanner cinnew Scanner(System.in);BigInteger a,b;acin.nextBigInteger();bcin.nextBigInteger();System.out.println(a.add(b));//加法System.out.println(a.…

檸檬工會_工會經營者

檸檬工會Hey guys! This week we’ll be going over some ways to work with result sets in MySQL. These result sets are the outputs of your everyday queries, such as:大家好&#xff01; 本周&#xff0c;我們將介紹一些在MySQL中處理結果集的方法。 這些結果集是您日常…

229. 求眾數 II

229. 求眾數 II 給定一個大小為 n 的整數數組&#xff0c;找出其中所有出現超過 ? n/3 ? 次的元素。 示例 1&#xff1a;輸入&#xff1a;[3,2,3] 輸出&#xff1a;[3]示例 2&#xff1a;輸入&#xff1a;nums [1] 輸出&#xff1a;[1]示例 3&#xff1a;輸入&#xff1a;…

寫給Java開發者看的JavaScript對象機制

幫助面向對象開發者理解關于JavaScript對象機制 本文是以一個熟悉OO語言的開發者視角&#xff0c;來解釋JavaScript中的對象。 對于不了解JavaScript 語言&#xff0c;尤其是習慣了OO語言的開發者來說&#xff0c;由于語法上些許的相似會讓人產生心理預期&#xff0c;JavaScrip…

Pythonic---------詳細講解

作者&#xff1a;半載流殤 鏈接&#xff1a;https://zhuanlan.zhihu.com/p/35219750 來源&#xff1a;知乎 著作權歸作者所有。商業轉載請聯系作者獲得授權&#xff0c;非商業轉載請注明出處。Pythonic&#xff0c;簡言之就是以Python這門語言獨特的方式寫出既簡潔又優美的代碼…

大數據ab 測試_在真實數據上進行AB測試應用程序

大數據ab 測試Hello Everyone!大家好&#xff01; I am back with another article about Data Science. In this article, I will write about what is A-B testing and how to use it on real life data-set to compare two advertisement methods.我回來了另一篇有關數據科…

492. 構造矩形

492. 構造矩形 作為一位web開發者&#xff0c; 懂得怎樣去規劃一個頁面的尺寸是很重要的。 現給定一個具體的矩形頁面面積&#xff0c;你的任務是設計一個長度為 L 和寬度為 W 且滿足以下要求的矩形的頁面。要求&#xff1a; 你設計的矩形頁面必須等于給定的目標面積。 寬度 …

node:爬蟲爬取網頁圖片

前言 周末自己在家閑著沒事&#xff0c;刷著微信&#xff0c;玩著手機&#xff0c;發現自己的微信頭像該換了&#xff0c;就去網上找了一下頭像&#xff0c;看著圖片&#xff0c;自己就想著作為一個碼農&#xff0c;可以把這些圖片都爬取下來做成一個微信小程序&#xff0c;說干…

如何更好的掌握一個知識點_如何成為一個更好的講故事的人3個關鍵點

如何更好的掌握一個知識點You’re launching a digital transformation initiative in the middle of the ongoing pandemic. You are pretty excited about this big-ticket investment, which has the potential to solve remote-work challenges that your organization fac…

centos 搭建jenkins+git+maven

gitmavenjenkins持續集成搭建發布人:[李源] 2017-12-08 04:33:37 一、搭建說明 系統&#xff1a;centos 6.5 jdk&#xff1a;1.8.0_144 jenkins&#xff1a;jenkins-2.93-1.1 git&#xff1a;git-2.9.0 maven&#xff1a;Maven 3.3.9 二、部署 2.1、jdk安裝 1&#xff09;下…

638. 大禮包

638. 大禮包 在 LeetCode 商店中&#xff0c; 有 n 件在售的物品。每件物品都有對應的價格。然而&#xff0c;也有一些大禮包&#xff0c;每個大禮包以優惠的價格捆綁銷售一組物品。 給你一個整數數組 price 表示物品價格&#xff0c;其中 price[i] 是第 i 件物品的價格。另有…