剑指offer 数据流中的中位数
题目:
如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。
代码:
1 class Solution { 2 public: 3 vector<int> list; 4 void Insert(int num) { 5 int length = list.size(), i = 0; 6 for(; i < length; i ++) 7 if(list[i] > num) { 8 list.insert(list.begin()+i,num); 9 break; 10 } 11 if( i == length ) 12 list.push_back(num); 13 } 14 15 double GetMedian() { 16 int length = list.size(); 17 int mid = length >> 1; 18 if(length & 1) 19 return list[mid]; 20 else 21 return (list[mid] + list[mid-1]) / 2; 22 } 23 };
我的笔记:
选择使用选择排序法,对每个数字流中的数字进行排序,后将排序后的数组中的中位数输出,偶数位则输出前后平均数,奇数位则直接输出。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具