实现交易计算盈利

简介: 来源:根据先进先出原则实现交易.例如:buy 100 share(s) at $20 eachbuy 20 share(s) at $24 eachbuy 200 share(s) at $36 eachsell 150 share(s) at $30 each得出计算结果 940.

来源:

根据先进先出原则实现交易.
例如:

buy 100 share(s) at $20 each
buy 20 share(s) at $24 each
buy 200 share(s) at $36 each
sell 150 share(s) at $30 each

得出计算结果 940.

优先卖掉持有时间最长的.

解题思路

直接使用Arraylist保存,卖出时从第一个开始即可.

当然也可以用队列做.

实现代码

/**
 * calculation the result
 * @param transactions
 * @return
 */
private Integer calculation(List<String> transactions) {
  int result = 0;

  //make the input to sell-100-20 format
  List<String> t = new ArrayList<>();
  for (String transaction : transactions) {
    if ("".equals(transaction)) {
      continue;
    }
    String[] ss = transaction.split(" ");
    t.add(ss[0] + "-" + ss[1] + "-" + ss[4].replace("$", ""));
  }

  for (int i = 0; i < t.size(); i++) {
    //cal while sell
    if (t.get(i).startsWith("sell")) {
      //get the num and the sell price
      int num = Integer.valueOf(t.get(i).split("-")[1]);
      int sellPrice = Integer.valueOf(t.get(i).split("-")[2]);
      //cal the buy before sell
      for (int j = 0; j < i; j++) {
        //sell shares, use FIFO.
        String[] sss = t.get(j).split("-");
        //if sell num < buy num, cal sell num shares in that transcation.
        if (num <= Integer.valueOf(sss[1])) {
          result += num * (sellPrice - Integer.valueOf(sss[2]));
          break;
        } else {
          //if sell num > buy num, cal all shares ,and cal new sellnum.
          result += Integer.valueOf(sss[1]) * (sellPrice - Integer.valueOf(sss[2]));
          num -= Integer.valueOf(sss[1]);
        }
      }
    }
  }

  return result;

}

完。







ChangeLog


2019-02-24 完成



以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客------>呼延十

目录
相关文章
|
安全 索引 算法
分布式唯一ID系列(2)——UUID适合做分布式ID吗
UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
5989 0
|
SQL 开发框架 Ubuntu
阿里云轻量应用服务器系统镜像和应用镜像区别及选择
阿里云轻量应用服务器可选应用镜像和系统镜像,应用镜像和系统镜像有什么如何?阿里云轻量应用服务器操作系统如何选择镜像?笔者分享阿里云轻量应用服务器应用镜像和系统镜像的区别及选择方法:
阿里云轻量应用服务器系统镜像和应用镜像区别及选择
|
8月前
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
719 5
|
负载均衡 网络协议 Unix
Nginx负载均衡与故障转移实践
Nginx通过ngx_http_upstream_module模块实现负载均衡与故障转移,适用于多服务器环境。利用`upstream`与`server`指令定义后端服务器组,通过`proxy_pass`将请求代理至这些服务器,实现请求分发。Nginx还提供了多种负载均衡策略,如轮询、权重分配、IP哈希等,并支持自定义故障转移逻辑,确保系统稳定性和高可用性。示例配置展示了如何定义负载均衡设备及状态,并应用到具体server配置中。
|
数据采集 机器学习/深度学习 人工智能
【AI 生成式】LLM 通常如何训练?
【5月更文挑战第5天】【AI 生成式】LLM 通常如何训练?
|
Web App开发 监控
国标28181平台只能连接视频监控吗?
国标28181平台只能连接视频监控吗?
385 0
|
人工智能 JavaScript 开发工具
【完全免费】VS Code 最好用的 12 款 AI 代码提示插件!!!
🎉 探索12款免费VSCode AI代码提示插件:Codeium、Codegeex、CodeFuse、TONGYI Lingma、Comate、iFlyCode、Fitten Code、Bito AI、Mintlify Doc Writer、Kodezi AI、aiXcoder、IntelliCode。这些插件提供智能补全、代码生成、注释、优化,支持多种语言,提升编程效率!🚀👩‍💻👨‍💻
17800 0
|
Linux
Centos7.2命令安装图形化界面
Centos7.2命令安装图形化界面
458 0
Centos7.2命令安装图形化界面
|
微服务
微服务框架学习路线
微服务框架学习路线
794 0
微服务框架学习路线
PCIe 均衡技术介绍(逻辑物理篇)
PCIe 均衡技术介绍(逻辑物理篇)
3681 0
PCIe 均衡技术介绍(逻辑物理篇)