数据结构面试题(摘录分钟)

时间:2018-12-22 21:14:30

标签: algorithm data-structures time-complexity

问题描述

想象一下,您是一名前厅交易员,其任务是执行交易。为简化起见,您只交易一只股票,每笔交易唯一收到的输入就是金额。由于您的后台办公室确实很急,因此您需要按顺序执行交易,以便首先执行收到的最后一个请求。此外,有时您的后台办公室可能会询问您所拥有的最小订单,但尚未执行。设计一个数据结构,可以帮助您解决这些任务。

实现支持以下操作的数据结构:

 - addOrder(int amount)  : adds an order  
 - executeOrder()        : executes an Order (according to the rules above) and returns the amount associated with it   
 - extractMinOrder()     : returns the amount of the current minimal order , without executing it

为方便起见,所有金额都可以假定为整数。

Sample inputs - Expected outputs

addOrder(13), addOrder(11), addOrder(9), addOrder(20)
extractMin() -> 9
executeOrder() -> 20
extractMin() -> 9
executeOrder() -> 9
extractMin() -> 11
addOrder(11)
extractMin() -> 11
executeOrder() -> 11
extractMin() -> 11
executeOrder() -> 11
extractMin() -> 13
executeOrder() -> 13

我能够提出两种具有以下时间复杂度的解决方案:

1- addOrder() - O(1)
   executeOrder() - O(1)
   extractMin() - O(n)

2- addOrder() - O(logn)
   executeOrder() - O(logn)
   extractMin() - O(1)

但是我被拒绝了,因为根据我的面试官的说法,我找不到最有效的解决方案-直到现在我还无法真正发现。

以上问题可以更有效地解决吗?

0 个答案:

没有答案