堆和优先队列

堆的简介, 是一种二叉树, 有最大堆和最小堆miniheap. 通常用于构建优先队列.

0. 目录

  1. 数据流中的第K大元素

1. 数据流中的第K大元素

数据流中的第K大元素

复杂度为log2(N)

class KthLargest {
private:
priority_queue<int, vector<int>, greater<int> > buf;//最小堆
int mk;
public:
KthLargest(int k, vector<int>& nums):mk(k) {
if(nums.size() <= k) {
for(int a:nums) buf.push(a);
if(nums.size() == k-1) buf.push(INT_MIN);//确保元素满足k个,INT_MIN是int类型的最小值
return;
}
int i=0;
for(;i<k;++i)
buf.push(nums[i]);
for(;i<nums.size();++i)
add(nums[i]);
} int add(int val) {
if(val<=buf.top()) return buf.top();
buf.pop();
buf.push(val);
return buf.top();
}
}; /**
* Your KthLargest object will be instantiated and called as such:
* KthLargest* obj = new KthLargest(k, nums);
* int param_1 = obj->add(val);
*/

最新文章

  1. 把Tomcat注册为windows服务
  2. python函数
  3. [讨论] 这几天来封装Win7用户配置文件丢失的解决方法个人心得
  4. Openxml入门---Openxm读取Excel数据
  5. SVN小贴士
  6. svn 命令行创建和删除 分支和tags
  7. Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader
  8. 解决A program file was not specified in the launch configuration.问题
  9. Hibernate: Truly Understanding the Second-Level and Query Caches--reference
  10. 第一次用shell脚本来自动运行带参程序
  11. Windows Azure 社区新闻综述(#71 版)
  12. javascript函数的声明,及返回值
  13. C语言函数参数的传递详解
  14. table左边固定-底部横向滚动条
  15. ubuntu17 安装python3.6 pip
  16. MFC中的Debug Assertion Failed 如何查找原因
  17. 关于用户登录状态存session,cookie还是数据库或者memcache的优劣
  18. JustOj 2009: P1016 (dp)
  19. 新手如何学习Java——Java学习路线图
  20. java十年,需要学会的Java开发体系

热门文章

  1. 【分布式锁】05-使用Redisson中Semaphore和CountDownLatch原理
  2. mysql中的on
  3. .NET的资源并不限于.resx文件
  4. JAVA开发中如何优化类的设计
  5. Error: clean-webpack-plugin only accepts an options object. See: https://github.com/johnagan/clean-webpack-plugin#options-and-defaults-optional
  6. Trie树-XOR-1695. Kanade的三重奏
  7. Contest 141
  8. vue cli3配置开发环境、测试环境、生产(线上)环境
  9. arcgis10.4.X的oracle数据库要求
  10. WEB缓存系统之varnish状态引擎