相关疑难解决方法(0)

实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作

我遇到了这个问题: 实现一个队列,其中push_rear(),pop_front()和get_min()都是常量时间操作.

我最初想过使用一个最小堆数据结构,它对于get_min()具有O(1)复杂度.但是push_rear()和pop_front()将是O(log(n)).

有谁知道实现这样一个有O(1)push(),pop()和min()的队列的最佳方法是什么?

我搜索了这个,并想指出这个算法极客线程.但似乎没有一个解决方案遵循所有3种方法的恒定时间规则:push(),pop()和min().

感谢所有的建议.

algorithm queue big-o data-structures

74
推荐指数
3
解决办法
2万
查看次数

排序哈希表(map,dictionary)数据结构设计

这是数据结构的描述:

它的操作类似于带有get,putremove方法的常规地图,但有一个sort方法可以调用以对地图进行排序.但是,映射会记住它的排序结构,因此后续的sort调用可以更快(如果结构在调用之间没有太大的变化sort).

例如:

  • 我称该put方法为1,000,000次.
  • 我叫这个sort方法.
  • 我将put方法称为100次.
  • 我叫这个sort方法.

我第二次调用该sort方法应该是一个更快的操作,因为地图的结构没有太大变化.请注意,映射不必维护调用之间的排序顺序sort.

我明白,这也许是不可能的,但我希望为O(1) get,putremove操作.像TreeMap这样的东西为这些操作提供了保证的O(log(n))时间成本,但始终保持排序顺序(无sort方法).

那么这个数据结构的设计是什么?

编辑1 - 返回前K个条目

虽然我很高兴听到上面一般情况的答案,但我的用例更加具体:我不需要对整个事情进行排序; 只是顶部的K元素.

用于有效返回哈希表的前K个条目的数据结构(地图,字典)

谢谢!

hashtable sorted hashmap map data-structures

7
推荐指数
2
解决办法
8904
查看次数

标签 统计

data-structures ×2

algorithm ×1

big-o ×1

hashmap ×1

hashtable ×1

map ×1

queue ×1

sorted ×1