find-median-from-data-stream & multiset priority queue 堆
https://leetcode.com/problems/find-median-from-data-stream/
这道题目实在是不错,所以单独拎出来。
https://discuss.leetcode.com/topic/27521/short-simple-java-c-python-o-log-n-o-1/2
看这里面的C++解法,用了priority_queue来实现的。(其实也是堆,之前我一直用multiset)
而Java用的PriorityQueue来做。
关于multiset 和 priority queue的区别,可以看这里:
https://discuss.leetcode.com/topic/27521/short-simple-java-c-python-o-log-n-o-1/2
priority_queue 调用 STL里面的 make_heap(), pop_heap(), push_heap() 算法实现。
注意,priority queue默认是大顶堆,top()和pop()都是针对最大的元素。
而Java的PriorityQueue是从小到大排的。
注意下面对于比较方法的初始化(尤其是比较方式参数的传入)
// constructing priority queues #include <iostream> // std::cout #include <queue> // std::priority_queue #include <vector> // std::vector #include <functional> // std::greater class mycomparison { bool reverse; public: mycomparison(const bool& revparam=false) {reverse=revparam;} bool operator() (const int& lhs, const int&rhs) const { if (reverse) return (lhs>rhs); else return (lhs<rhs); } }; int main () { int myints[]= {10,60,50,20}; std::priority_queue<int> first; std::priority_queue<int> second (myints,myints+4); std::priority_queue<int, std::vector<int>, std::greater<int> > third (myints,myints+4); // using mycomparison: typedef std::priority_queue<int,std::vector<int>,mycomparison> mypq_type; mypq_type fourth; // less-than comparison mypq_type fifth (mycomparison(true)); // greater-than comparison return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!