当前位置:网站首页>笔试题:金额拆分
笔试题:金额拆分
2022-08-03 11:03:00 【Li Guogang】
问题1
使用JAVA代码实现,将完成后代码复制在HTML TAB下即可,不要使用其他语言!
【注意】
可支付用的账户不是给定case中的固定三个,可以支持任意多的账户;
能有面向对象的思维去解决问题;
核心逻辑是希望对给定的付款总金额和一批支付账户,给出本次付款使用哪些账户和对应每个账户的付款金额;
有良好的编码习惯;
有足够的测试用例;
【金额拆分】
假设有如下的付款场景:
给定本次付款总金额,从已有的账户中选择可支付金额足够的账户进行付款;
要求给出本次支付使用的账户和每个账号需要支付的金额;
case1:
输入:
付款金额:100
账号1剩余可支付金额: 80
账号2剩余可支付金额: 30
账号3剩余可支付金额: 20
输出:
账号1: 80
账号2: 20
case2:
输入:
付款金额:120
账号1剩余可支付金额: 80
账号2剩余可支付金额: 30
账号3剩余可支付金额: 20
输出:
账号1: 80
账号2: 30
账号2: 10
答案1
import java.util.Arrays;
import java.util.HashMap;
/** * 大都督 * 2022/8/2 16:35 **/
public class Test {
public static void main(String[] args) {
Double totalAmount = 120d;
Double[] accounts = {
80d, 30d, 20d};
System.out.println(test(totalAmount, accounts));
}
public static HashMap<String, Object> test(Double totalAmount, Double[] accounts) {
Double diff = totalAmount;
Arrays.sort(accounts, (o1, o2) -> o2.compareTo(o1));
HashMap<String, Object> result = new HashMap<>();
for (int i = 0; i < accounts.length; i++) {
if ((diff = diff - accounts[i]) > 0) {
result.put("账号" + (i + 1), accounts[i]);
} else if (diff == 0) {
break;
} else {
result.put("账号" + (i + 1), accounts[i] + diff);
break;
}
}
return result;
}
}
打印输出
边栏推荐
- 跨链桥协议 Nomad 遭遇黑客攻击,损失超 1.5 亿美元
- Programmers architecture practice way: software architecture basic concepts and thinking
- numpy
- 谷歌实用插件分享
- 实现2d人物在跳跃的同时左右移动
- [Output each bit of an integer, from high to low.With and without recursion]
- 图新地球为什么很模糊,白球、看图、下载问题深度剖析
- 云原生 Dev0ps 实践
- 深度学习经典网络 -- Inception系列(稀疏结构)
- Android 技术面试准备(含面试题及答案)
猜你喜欢
随机推荐
Android 技术面试准备(含面试题及答案)
Summary of redis basics - data types (strings, lists, sets, hashes, sets)
Classical Architecture and Memory Classification of Embedded Software Components
【JDBC以及内部类的讲解】
谷歌实用插件分享
C#/VB.NET 从PDF中提取表格
JS快速高效开发技巧指南(持续更新)
oracle计算同、环比
基于PHP7.2+MySQL5.7的回收租凭系统
浅谈SVN备份
QT with OpenGL(HDR)
SmobilerService 推送实现
numpy
【AppCube】数字孪生万物可视 | 联接现实世界与数字空间
程序员架构修炼之道:如何设计出可持续演进的系统架构?
在线生成接口文档
深度学习100例——卷积神经网络(CNN)实现服装图像分类
What is the ERC20 token standard?
fast planner中拓扑路径搜索
【二分查找详解外加递归写法】附有全部代码