返回信息流val小的节点在堆顶,pop弹堆顶元素
: [](ListNode* a, ListNode* b) { return a->val > b->val; });
: 想问一下,这个函数如果a->val > b->val,那么a和b哪个应该在堆底部,哪个应该在堆顶部,怎么理解
: ...................
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #6875525同步于 2024/3/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖
求解C++最小堆问题
IWhisper#312
2024/3/1镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
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哪个应该在堆底部,哪个应该在堆顶部,怎么理解
val小的节点在堆顶,pop弹堆顶元素
: [](ListNode* a, ListNode* b) { return a->val > b->val; });
: 想问一下,这个函数如果a->val > b->val,那么a和b哪个应该在堆底部,哪个应该在堆顶部,怎么理解
: ...................
优先队列之所以默认大顶堆因为他名字就叫优先队列 比较的关键字是被当作权值或者说优先级 自然默认大顶堆了 你也可以自己写一个默认小顶堆的优先队列 没有谁对谁错之分
而把<重载成>后自然就反过来成为小顶堆了 比这更值得注意的是比较函数必须是严格偏序