use*_*367 7 c++ stl map data-structures
我需要一个容器来存储对,我有两个操作:
对于第一个操作,map是一个很好的结构.对于第二个操作,似乎优先队列是一个好的队列.你会怎么做?无论如何在没有O(n)循环的情况下完成两个操作?谢谢.
tem*_*def 7
对此渐近有效的解决方案是使用散列表和Fibonacci堆的组合.您可以使用哈希表在O(1)时间内访问与任何特定键相关联的值,并使用Fibonacci堆能够快速查找具有最低值的键/值对(这样做)在O(1)).
如果要更改与键关联的值,如果要增加该值,则可以在(摊销)O(1)时间内使用Fibonacci堆上的增量键操作来执行此操作,该操作具有O(1)摊销时间.如果您减少该值,它会采取O(log n)的时间来删除的元素出来的斐波那契堆,然后重新插入.
总的来说,这给出了时间复杂度
希望这可以帮助!
归档时间:
14 年,2 月 前
查看次数:
1127 次
最近记录: