处理交易列表的算法

问题描述

这是我在为交易/支付服务公司做 SWE Internship OA 时经常遇到的一类问题:给定形式为“Action-Customer ID-Transaction ID-Amount”的交易列表,我们被要求处理它们并返回要采取的行动或剩余金额的列表。

这是一个具体的例子。输入是一个字符串列表,格式为“Action-Order ID-Price-Amount-Buy/Sell”,只有 2 个操作 SUB(提交)和 CXL(取消)。

  • 对于买入,较高的价格具有更高的优先级,而对于卖出,较低的价格具有更高的优先级。如果对于相同的买入或卖出类别,价格相似,则较早出现的字符串具有更高的优先级。
  • 如果买入价>=卖出价,则两个订单匹配,Amount = min(Amount of Sell,Amount of Buy),相应决定买入或卖出。
  • 如果订单已经成交,则不会取消。
  • 如果 CXL 操作中的订单 ID 不存在,则不会有任何影响(无错误)。

我们被要求返回一个要采取的行动列表,输出应该是一个字符串列表,格式如下:“Order ID-Buy/Sell-Amount to Buy/Sell”

输入和输出示例:

输入:["SUB-hghg-10-400-B","SUB-abab-15-500-B","SUB-abcd-10-400-S"]

输出:["abcd-S-400"]

说明:“abab”的Buy price比“hghg”高,虽然来得晚,所以会先处理。 abab 的数量 = 500,abcd 的数量 = 400 => 数量 = 400

输入:["SUB-hghg-10-400-B","CXL-hghg"]

输出:[]

说明:什么都不做,因为订单在成交前就被取消了。

我已经尝试使用哈希映射解决问题,但对我来说太复杂了。之前我也遇到过类似的问题,但不同的是,无论订单是否已成交,Cancel都会删除订单,在这种情况下,我使用LinkedList来跟踪订单。

我想问一下是否有任何通用方法可以最佳地解决此类问题。我在 LeetCode 闲逛了一段时间,练习了一些 Medium 问题,但没有遇到过这种问题类型。如果有什么典型的数据结构可以有效地存储每个订单的信息,我也想知道。我还在互联网上搜索了一些关键字,如算法交易、处理支付/交易的算法,但我还没有找到任何有用的东西。非常感谢任何帮助!

非常感谢您阅读我的长篇文章。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)