我想实现一个具有以下约束的双端优先级队列:
需要在固定大小的数组中实现..比如说100个元素..如果数组满后需要添加新元素,则需要删除最旧的元素
需要 O(1) 中的最大值和最小值
如果可能,插入 O(1)
如果可能,删除 O(1) 中的最小值
如果可能,在 O(1) 中清除为空/初始化状态
以 O(1) 计算当前数组中的元素数
对于以上 5 个操作,我希望 O(1),但在同一实现中不可能对所有操作都使用 O(1)。至少 3 个操作的 O(1) 和其他 2 个操作的 O(log(n)) 就足够了。
如果可以为这样的实现提供任何指针,将不胜感激。