leetcode c++做题思路和题解(5)——堆的例题和总结
2024-09-02 08:39:15
堆和优先队列
堆的简介, 是一种二叉树, 有最大堆和最小堆miniheap. 通常用于构建优先队列.
0. 目录
1. 数据流中的第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);
*/
最新文章
- 把Tomcat注册为windows服务
- python函数
- [讨论] 这几天来封装Win7用户配置文件丢失的解决方法个人心得
- Openxml入门---Openxm读取Excel数据
- SVN小贴士
- svn 命令行创建和删除 分支和tags
- Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader
- 解决A program file was not specified in the launch configuration.问题
- Hibernate: Truly Understanding the Second-Level and Query Caches--reference
- 第一次用shell脚本来自动运行带参程序
- Windows Azure 社区新闻综述(#71 版)
- javascript函数的声明,及返回值
- C语言函数参数的传递详解
- table左边固定-底部横向滚动条
- ubuntu17 安装python3.6 pip
- MFC中的Debug Assertion Failed 如何查找原因
- 关于用户登录状态存session,cookie还是数据库或者memcache的优劣
- JustOj 2009: P1016 (dp)
- 新手如何学习Java——Java学习路线图
- java十年,需要学会的Java开发体系
热门文章
- 【分布式锁】05-使用Redisson中Semaphore和CountDownLatch原理
- mysql中的on
- .NET的资源并不限于.resx文件
- JAVA开发中如何优化类的设计
- Error: clean-webpack-plugin only accepts an options object. See: https://github.com/johnagan/clean-webpack-plugin#options-and-defaults-optional
- Trie树-XOR-1695. Kanade的三重奏
- Contest 141
- vue cli3配置开发环境、测试环境、生产(线上)环境
- arcgis10.4.X的oracle数据库要求
- WEB缓存系统之varnish状态引擎