支持Enque,Dequeue,Peak,Min和Max操作的队列的正确数据结构是什么,并在O(1)时间内执行所有这些操作.
最明显的数据结构是链表,但Min,Max操作将是O(n).Priority Queue是另一个完美的选择,但Enqueue,Dequeue应该以Queue的正常方式工作.(FIFO)
想到的另一个选项是Heap,但是我无法弄清楚如何使用Heaps设置具有Min,Max操作的队列.
任何帮助深表感谢.
这是一个描述:
它的操作类似于带有get,put和remove方法的常规地图,但有一种getTopKEntries(int k)获取前K个元素的方法,按键排序:
对于我的具体使用情况下,我添加,删除,并在结构调整很多价值观,但在任何一个时间有大约500-1000元; 我想有效地返回前10个键的条目.
put和remove方法的许多倍.getTopKEntries方法.put和remove方法.getTopKEntries方法.我希望为O(1) get,put和remove运营,并getTopKEntries以仅取决于K,没有在地图的大小.
那么有效返回地图的前K个元素的数据结构是什么?
我的另一个问题是类似的,但是用于返回地图的所有元素,按键排序.
如果有帮助,则键和值都是4字节整数.