匹配数据的最有效数据结构是什么?例如,假设我看到以下场景:
<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),如果买入没有用完卖单,则买入订单变为常数,如果买入没有用完,则买入订单变为常数(您的问题陈述未指定)