algorithm – 数据匹配的高效数据结构

匹配数据的最有效数据结构是什么?例如,假设我看到以下场景:

<time available> <buy or sell> <company name> <buy or sell price> <amount to buy or sell>

这样一个文件可能包含:

0 sell yahoo $100 #1
2 sell yahoo $14  #1
2 sell yahoo $28  #1
.. 95 other yahoo sells <$125 and amount #1
3 sell yahoo $17  #1
5 sell yahoo $33  #1
9 buy yahoo  $125 #100

是否有可能将此最后一次购买与之前在O(n)时间内的100次出售相匹配,其中如果买入与其想要购买的公司相对应的最低售价(或与之相对应的最低售价)匹配,则n = 100在领带的情况下是第一个)?

我知道一个天真的解决方案是对列表进行排序并按顺序排列,但这需要比O(n)时间更长的时间.处理此问题的最有效数据结构是什么以及类似的问题?

最佳答案 尝试使用公司名称中的哈希映射到按价格排序的销售订单堆.卖出订单的插入现在是O(log n),如果买入没有用完卖单,则买入订单变为常数,如果买入没有用完,则买入订单变为常数(您的问题陈述未指定)

点赞