匹配数据的最有效数据结构是什么?例如,假设我出现以下情况:
<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)时间更长的时间。处理此问题的最有效数据结构是什么?与此类似的问题是什么?
答案 0 :(得分:2)
尝试使用公司名称中的哈希映射到按价格排序的销售订单堆。现在卖出订单O(log n)
,如果买入没有用完卖单,买入订单就会变为常数;如果买入没有用完,则买入订单变为常量(您的问题陈述未指明)
答案 1 :(得分:0)
由于购买和销售将处理相同的组织,最好将所有购买(或)销售记录保存在地图中,就像所有雅虎记录都保存在一个列表中,该列表被散列到带有&#34的地图;雅虎&#34;作为关键,这可以最大限度地减少搜索空间。按照时间戳,价格,数量进行排序,然后您可以通过实施此结构以最佳成本实现所需功能,在插入时。然后对于任何查询之后,搜索空间最小的时间应该花费更少的时间。