存取款系统接口设计

题目描述:

设计一个存取款接口,入参是账户数组balances 与存取款请求体数组requests
对于取款要求判断:
当前余额不足,返回余额不足帐号
之前的取款时间在24之前的,在24小时之后返回上次取款额度的百分之2并向下取整。

example1:
String[] requests = {“withdraw 1613327630 2 480”,
“withdraw 1613327644 2 800”,
“withdraw 1614105244 1 100”,
“deposit 1614108844 2 200”,
“withdraw 1614108845 2 150”};
int[] balances = {1000, 1500};
返回: {900, 295}

example2:
String[] requests = {“withdraw 1613327630 2 480”,
“withdraw 1613327644 2 800”,
“withdraw 1614105244 1 1000”,
“deposit 1614108844 2 200”,
“withdraw 1614108845 2 150”};
int[] balances = {1000, 500};
返回 {-1}
注明:1号账户余额不足

思路

we can use an array preWithdrawNum to present the last withdraw account nums, each time we deal with the current request, we can judge whether the current time bigger than the last withdraw request 's time, if so, we can deal with the cashback logic of giving 2 percent of the last withdraw amount

 static int[] solution(int[] balances, String[] requests) {int[] preWithdrawNum = new int[requests.length];Arrays.fill(preWithdrawNum, -1);for (int i = 0; i < requests.length; i++) {String req = requests[i];String[] items = req.split(" ");String func = items[0];Integer num = Integer.valueOf(items[2]) - 1, amount = Integer.valueOf(items[3]);long time = Long.valueOf(items[1]);if (items.length != 4) {return new int[]{-num};}for (int j = 0; j < preWithdrawNum.length; j++) {if (preWithdrawNum[j] != -1 ) {String[] lastItems = requests[j].split(" ");long lastTimePlus24h = Long.valueOf(lastItems[1]) + 24 * 60 * 60;Integer currentAccountN = preWithdrawNum[j] ;if (time > lastTimePlus24h ) {balances[currentAccountN] += Math.floor(Integer.valueOf(lastItems[3]) * 0.02);preWithdrawNum[j] = -1;}}}if ("withdraw".equals(func)) {if (balances[num] < amount) {return new int[]{-i};}balances[num] -= amount;preWithdrawNum[i] = num;}if ("deposit".equals(func)) {balances[num] += amount;}}return balances;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive期末测试题(头歌)

第1关&#xff1a;计算“Bad Boys (1995)”这部电影的评分次数 -- 使用mydb数据库 USE mydb;-- 计算“Bad Boys (1995)”这部电影的评分次数 SELECT m.movieid, m.moviename, COUNT(r.movieid) AS rating_count FROM t_movies m JOIN t_ratings r ON m.movieid r.movieid WHE…

【欧几里得算法】C++求解最大公因子:求解两个正整数的最大公因子

1. 算法描述&#xff1a; 【欧几里得算法】求解两个正整数m&#xff0c;n的最大公因子 2. 算法求解步骤&#xff1a; E1&#xff08;求两个整数的余数&#xff09;&#xff1a;求两个正整数的余数&#xff0c;r m % nE2&#xff08;判断余数是否为0&#xff09;&#xff1a…

遥感影像图像识别

遥感影像图像识别 基于遥感影像的道路提取论文、开源代码和数据集汇总

C语言 结构体和共用体——结构体所占内存的字节数

目录 结构体所占内存的字节数 结构体所占内存的字节数

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

使用 Unity OpenXR 实现Gaze眼部追踪 在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。 Unity …

Linux文件:EXT2文件系统工作原理 软硬链接

Linux文件&#xff1a;文件系统究竟是什么&#xff1f;如何管理文件&#xff1f; 前言一、磁盘结构、存储策略1.1 磁盘存储结构1.2 磁盘存储策略1.3 磁盘的逻辑存储结构 二、如何管理磁盘文件三、如何管理组3.1 每个组保存的数据种类3.2 如何管理数据1、节点表&#xff08;inod…

科普文:Shell编程三剑客:grep+sed+awk

shell三剑客是grep、sed和awk三个工具的简称,因功能强大&#xff0c;使用方便且使用频率高&#xff0c;因此被戏称为三剑客&#xff0c;熟练使用这三个工具可以极大地提升运维效率。 三剑客的特点: 命令 特点 使用场景 grep 擅长查找过滤 快速查找过滤 sed 擅长取行和替…

智慧城市可视化页面怎么做?免费可视化工具可以帮你

智慧城市是一个综合性的概念&#xff0c;广泛应用于各个领域&#xff0c;如基础设施建设、信息化应用、产业经济发展、市民生活品质等。 可视化页面的制作也是一个综合性的过程&#xff0c;需要确定展示内容、数据收集与处理、设计可视化元素等多个环节紧密配合。 1. 明确展示…

download failed after attempts=6: dial tcp 108.160.169.178:443: i/o timeout问题解决

添加公开的docker加速代理(可能会失效)&#xff1a; vim /etc/docker/daemon.json{"registry-mirrors":["https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.m.daocloud.io","https://noohub.ru","https://huecker.io…

序列化Serialization

介绍 序列化&#xff08;Serialization&#xff09;是将对象的状态转换为可存储或传输的格式的过程。通过序列化&#xff0c;可以将对象保存到文件中、数据库中&#xff0c;或者通过网络传输到远程系统。相应地&#xff0c;反序列化&#xff08;Deserialization&#xff09;是…

从零开始开发视频美颜SDK:实现直播美颜效果

因此&#xff0c;开发一款从零开始的视频美颜SDK&#xff0c;不仅可以节省成本&#xff0c;还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前&#xff0c;首先需要进行详细的需求…

python对点云可视化设置颜色

1、背景介绍 点云分类/分割时&#xff0c;常需要对分类结果进行可视化&#xff0c;其中给点云赋予不同颜色是一种最直接方法。介绍基于python中matplotlib进行点云颜色渲染显示。 2、点云颜色渲染 2.1 有限种颜色渲染 matplotlib在点云颜色渲染时&#xff0c;使用表示颜色的关…

如何让接口请求,页面不刷新加载,页面加载中 不显示

check(data, config) {return request(Object.assign({url: dicEquPurpose/queryList,data: packQuery(data),noLoading:true }, config || {})) }, 加上 noLoading:true 即可

Spring开发实践(五)

接口幂等性 接口幂等性&#xff08;Idempotency&#xff09;是指在网络请求中&#xff0c;无论一个操作被执行多少次&#xff0c;产生的结果都是相同的。换句话说&#xff0c;幂等操作的多次执行不会改变系统的状态&#xff0c;或者说多次执行的结果与单次执行的结果是一样的。…

C++知识点总结(41):广度优先搜索

广度优先搜索 一、广度优先搜索1. 意义2. 分析3. 基本程序 二、例题1. 最短路径模板2. 跳跃的马2.1 审题2.2 思路2.3 参考答案 3. 今天就上 200 200 200 层3.1 审题3.2 参考答案 三、DFS VS. BFS *注&#xff1a;如果还没有学过 结构体 或者 栈/队列/优先队列 的同学请仔细看完…

【代码随想录】【算法训练营】【第65天】 [卡码94]城市间货物运输I

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 65&#xff0c;周四&#xff0c;继续ding~ [卡码94] 城市间货物运输I 题目描述 卡码94 城市间货物运输I 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 Be…

ubuntu文件夹加密

veracrypt 安装 wget https://launchpad.net/veracrypt/trunk/1.24-update7/+download/veracrypt-1.24-Update7-setup.tar.bz2tar -jxvf veracrypt-1.24-Update7-setup.tar.bz2 uname -m sudo ./veracrypt-1.24-Update7-setup-console-x64 # 选1 # 一直回车 选yes安装成功创…

快递查询|阿里云实现调用API接口

整体请求流程 介绍&#xff1a; 本次解析通过阿里云云市场的云服务来实现程序中对快递包裹实时监控&#xff0c;首先需要准备选择一家可以提供快递查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065859#skuyuncode5985900001 步骤1: 选择商品 如图点击…

网站外链还有没有作用

前言 还记得“内容为王&#xff0c;外链为皇”这句话吗&#xff1f;在以前网站外链是网站优化中非常主要的环节。那时候做一个网站&#xff0c;只要不停的发外链&#xff0c;收录就不会差&#xff0c;于是大部分站长都使劲发外链。 有市场就有商场&#xff0c;大家都看到外链…

【国内超大型智能算力中心建设白皮书 2024】_智算中心算力规划

文末有福利&#xff01; 智算中心建设通过领先的体系架构设计&#xff0c;以算力基建化为主体、以算法基建化为引领、以服务智件化为依托&#xff0c;以设施绿色化为支撑&#xff0c;从基建、硬件、软件、算法、服务等全环节开展关键技术落地与应用。 一、体系架构 &#xf…