我正在尝试在Rust中解决leetcode problem 703, largest_element_in_a_stream。
我想使用BinaryHeap
解决此问题,但是默认情况下,Rust中的BinaryHeap
是最大堆。我不知道如何将其转换为最大堆。
我在类似的问题中找到了答案:
How do I create a BinaryHeap that pops the smallest value, not the largest?
How can I implement a min-heap of f64 with Rust's BinaryHeap?
但是两个问题的答案使用了一些特殊的结构并重载了Ord
特征,我想解决诸如i32
之类的原语。
我该如何解决?
答案 0 :(得分:0)
假设您实际上想要一个最小堆,您可以否定将它放入堆中的每个值并否定您取出的每个值。
注意:正如@Shepmaster所暗示的那样,有一个i32负值,它没有对应的正值(平衡0,这是它自己的负值)。如果您需要处理此值,则此技术将不起作用,至少没有一点技巧就无法实现。