059. 数据流的第 K 大数值

class KthLargest {
public:
priority_queue<int,vector<int>,greater<int>>heap;//小根堆 维护第1大到第k大的数 top就是第k大的数
int k;//太妙了
/*
第n大 n-1 n-2 ... k k-1 k-2 ... 第1大
如果加的数小于a[k] 它将被弹走
大 k是第k+1大的 把k弹出去
*/
KthLargest(int _k, vector<int>& nums) {
k=_k;
for(auto x:nums)
{
heap.push(x);
if(heap.size()>k)heap.pop();
}
}
int add(int val) {
heap.push(val);
if(heap.size()>k)heap.pop();
return heap.top();
}
};

060. 出现频率最高的 k 个数字

class Solution {
public:
/*
计数排序
因为最多出现n次 拿一个数组存 出现i次元素的有多少个
*/
vector<int> topKFrequent(vector<int>& nums, int k) {
unordered_map<int,int>cnt;//每个元素出现了多少次
int n=nums.size();
vector<int>ans;
vector<int>f(n+1);
for(auto x:nums)cnt[x]++; for(auto [x,c]: cnt)f[c]++; int i=n;
while(k>0)k-=f[i--]; for(auto [x,c]:cnt)
if(c>i)ans.push_back(x); return ans;
}
};

061. 和最小的 k 个数对

class Solution {
typedef vector<int> VI;
/*
多路归并
b0+a0 b0+a1 +... + a[n-1]
b1
.
.
.
b[m-1] 优先队列 存vector<int> 不是int
*/
public: vector<vector<int>> kSmallestPairs(vector<int>& a, vector<int>& b, int k) {
priority_queue<VI,vector<VI>,greater<VI>>heap;
vector<VI>ans;
int n=a.size(),m=b.size();
for(int i=0;i<m;i++)heap.push({b[i]+a[0],0,i});
// b[i]+a[0]用于比较
//0是a下标 i是b下标 用于传答案 while(heap.size()&&k)
{
k--;
VI t=heap.top();
heap.pop();
ans.push_back({a[t[1]],b[t[2]]});
if(t[1]+1<n)heap.push({a[t[1]+1]+b[t[2]],t[1]+1,t[2]});
}
return ans;
}
};

剑指 Offer II 堆的更多相关文章

  1. 剑指Offer——简述堆和栈的区别

    剑指Offer--简述堆和栈的区别 堆(Heap) Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建: Java虚拟机规范描述:所有的对象实例及数组都要在堆上分配: Java堆可以处于物理 ...

  2. 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器

    剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...

  3. 【剑指 Offer II 001. 整数除法】同leedcode 29.两数相除

    剑指 Offer II 001. 整数除法 解题思路 在计算的时候将负数转化为正数,对于32位整数而言,最小的正数是-2^31, 将其转化为正数是2^31,导致溢出.因此将正数转化为负数不会导致溢出. ...

  4. 剑指Offer——II平衡二叉树

    class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None # 这道题使用中序遍历加上 ...

  5. 【力扣】剑指 Offer II 092. 翻转字符

    题目 解题思路 一个很暴力的想法,在满足单调递增的前提下,使每一位分别取 1 或 0,去看看哪个结果小. 递归函数定义int dp(StringBuilder sb, int ind, int pre ...

  6. 剑指Offer——迅雷笔试题+知识点总结

    剑指Offer--迅雷笔试题+知识点总结 情景回顾 时间:2016.9.19 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:迅雷笔试 总体来说,迅雷笔试内容体量不算多,主要 ...

  7. 《剑指offer》内容总结

    (1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...

  8. 剑指offer从上往下打印二叉树 、leetcode102. Binary Tree Level Order Traversal(即剑指把二叉树打印成多行、层序打印)、107. Binary Tree Level Order Traversal II 、103. Binary Tree Zigzag Level Order Traversal(剑指之字型打印)

    从上往下打印二叉树这个是不分行的,用一个队列就可以实现 class Solution { public: vector<int> PrintFromTopToBottom(TreeNode ...

  9. 学会从后往前遍历,例 [LeetCode] Pascal's Triangle II,剑指Offer 题4

    当我们需要改变数组的值时,如果从前往后遍历,有时会带来很多麻烦,比如需要插入值,导致数组平移,或者新的值覆盖了旧有的值,但旧有的值依然需要被使用.这种情况下,有时仅仅改变一下数组的遍历方向,就会避免这 ...

  10. [简单-剑指 Offer 53 - II. 0~n-1中缺失的数字]

    [简单-剑指 Offer 53 - II. 0-n-1中缺失的数字] 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0-n-1之内.在范围0-n-1内的n个数字中有且只有一 ...

随机推荐

  1. STM32F0库函数初始化系列:GPIO配置

    1 void GPIO_Configuration(void) 2 { 3 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); 4 RCC_AHBP ...

  2. 关于Powerlink和EtherCAT的对比

    https://www.amobbs.com/thread-5679636-1-2.html 转发自:http://book.2cto.com/201508/55093.html 这个问题经常会被人问 ...

  3. 【JavaScript】JS引擎中执行上下文如何顺序执行代码

    首先我们知道JavaScript引擎包括一个调用栈和堆,调用栈是代码实际执行的地方,使用执行上下文(执行环境)来完成:堆是非结构化的内存池,存储了应用程序所需要的所有对象. 执行上下文是什么? 执行上 ...

  4. .Net Core IIS部署以及问题总结

    IIS部署 1.程序内和.NET之前一样发布就行 2.文件考到服务器,正常部署 重点:①程序池选择无托管代码.②模块中看是否有安装这两个模块,没有的话去微软官网下载 下载地址:两个都要装 1.http ...

  5. NameError: name '_name_' is not defined

    if _name_ == '_main_': 错误的原因可能是name是双下划线.(明显下面的下划线要长一点) if __name_ == '_main__':

  6. KingbaseES R6集群误删除备节点的集群目录恢复方式

    一.场景 一主一备环境 主节点:192.168.17.9 备节点:192.168.17.10 故障:备节点安装目录/home/kingbase/cluster备删除 二.恢复方式 1.备节点集群目录备 ...

  7. go语言环境配置(windous)

    1.下载go语言安装包:https://golang.google.cn/dl/ 2.配置环境变量:GOBIN:项目bin目录  GOPATH:项目目录(src下) GOROOT(go的环境变量) G ...

  8. 栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导

    栈的数学性质:n个不同元素入栈,出栈元素不同排列的个数的推导,卡特兰数(明安图数)的推导 前言:重在记录,可能出错. 这部分内容借鉴了网络上的一些内容.如:什么是卡特兰数?和怎么理解出栈顺序有多少种? ...

  9. 28.yield return 语法

    一.yield return 该语句可以实现在 foreach 循环中,在其他方法边遍历边输出.如下: class Program { private List<int> list = n ...

  10. AppCrawler自动遍历工具,适用于移动端

    AppCrawler下载链接:https://github.com/seveniruby/AppCrawler,主要用途是回归遍历.原则从中间元素开始遍历 AppCrawler框架引擎 appium ...