This question already has an answer here:
How do I create a BinaryHeap that pops the smallest value, not the largest?
(1个答案)
8个月前关闭。
我在努力解决生锈的问题。
我想使用BinaryHeap来解决这个问题,但是鲁斯特中的BinaryHeap是默认的最大堆。我不知道如何将它转换成最大堆。
我在类似的问题中找到了答案:
leetcode problem 703, largest_element_in_a_stream
How do I create a BinaryHeap that pops the smallest value, not the largest?
但这两个问题的答案使用了一些特殊的结构并重载了Ord特性,我想为i32等原语解决这个问题。
我该怎么解决?

最佳答案

假设您真的需要一个最小堆,那么您可以对放入堆中的每个值取反,对取出的每个值取反。
注:正如@Shepmaster所暗示的,有一个单独的i32负值,它没有对应的正值(平衡0,它自己是负的)。如果您需要处理这个值,这个技术将无法工作,至少在没有一点精细处理的情况下是不行的。

关于rust - 如何创建最小的BinaryHeap? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55476777/

10-11 17:28