在其元素更改优先级时更新Java PriorityQueue我正在尝试使用a PriorityQueue来命令对象Comparator。这可以很容易地实现,但是对象类变量(比较器计算优先级)可能在初始插入后发生变化。大多数人都提出了删除对象,更新值并再次重新插入的简单解决方案,因为这是优先级队列的比较器付诸实施的时候。除了在PriorityQueue周围创建一个包装类之外,还有更好的方法吗?
3 回答
智慧大石
TA贡献1946条经验 获得超3个赞
我不知道是否有Java实现,但是如果你正在改变键值,你可以使用Fibonnaci堆,它具有O(1)摊销成本来减少堆中条目的键值,而不是比普通堆中的O(log(n))。
添加回答
举报
0/150
提交
取消