猿问

在其元素更改优先级时更新Java PriorityQueue

在其元素更改优先级时更新Java PriorityQueue

我正在尝试使用a PriorityQueue来命令对象Comparator

这可以很容易地实现,但是对象类变量(比较器计算优先级)可能在初始插入后发生变化。大多数人都提出了删除对象,更新值并再次重新插入的简单解决方案,因为这是优先级队列的比较器付诸实施的时候。

除了在PriorityQueue周围创建一个包装类之外,还有更好的方法吗?


蝴蝶不菲
浏览 589回答 3
3回答

智慧大石

我不知道是否有Java实现,但是如果你正在改变键值,你可以使用Fibonnaci堆,它具有O(1)摊销成本来减少堆中条目的键值,而不是比普通堆中的O(log(n))。
随时随地看视频慕课网APP

相关分类

Java
我要回答