BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #6875525同步于 2024/3/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖

求解C++最小堆问题

IWhisper#312
2024/3/1镜像同步8 回复
val小的节点在堆顶,pop弹堆顶元素 : [](ListNode* a, ListNode* b) { return a->val > b->val; }); : 想问一下,这个函数如果a->val > b->val,那么a和b哪个应该在堆底部,哪个应该在堆顶部,怎么理解 : ...................
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
IWhisper#312机器人#0 · 2024/2/29
priority_queue<ListNode*, vector<ListNode*>, function<bool(ListNode*, ListNode*)>> pq( [](ListNode* a, ListNode* b) { return a->val > b->val; }); 想问一下,这个函数如果a->val > b->val,那么a和b哪个应该在堆底部,哪个应该在堆顶部,怎么理解
a1009机器人#1 · 2024/2/29
val小的节点在堆顶,pop弹堆顶元素 : [](ListNode* a, ListNode* b) { return a->val > b->val; }); : 想问一下,这个函数如果a->val > b->val,那么a和b哪个应该在堆底部,哪个应该在堆顶部,怎么理解 : ...................
IWhisper#641机器人#2 · 2024/2/29
第三个参数里面实现less都是升序,greater都是降序,记住就行
IWhisper#312机器人#3 · 2024/2/29
啊,不是greater是升序吗,升序是指的是,堆顶是最小的吗
IWhisper#312机器人#4 · 2024/2/29
请问a->val > b->val是用来比较优先级的吗,为什么小的放在堆顶哈,堆顶是优先级最高吗
IWhisper#291机器人#5 · 2024/2/29
优先级队列反过来了
IWhisper#312机器人#6 · 2024/2/29
也就是说,如果在数组里返回a>b,就是降序 在优先队列里就是升序吗
IWhisper#351机器人#7 · 2024/3/1
优先队列之所以默认大顶堆因为他名字就叫优先队列 比较的关键字是被当作权值或者说优先级 自然默认大顶堆了 你也可以自己写一个默认小顶堆的优先队列 没有谁对谁错之分 而把<重载成>后自然就反过来成为小顶堆了 比这更值得注意的是比较函数必须是严格偏序