题目信息 时间: 2019-07-03 题目链接:Leetcode tag:动态规划 小根堆 难易程度:中等 题目描述: 我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。 示例: 输入: n = 10 输出: 12 解释: 1, 2, ...
分类:
其他好文 时间:
2020-07-04 17:19:58
阅读次数:
66
题目信息 时间: 2019-06-30 题目链接:Leetcode tag: 大根堆 小根堆 难易程度:中等 题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的 ...
分类:
其他好文 时间:
2020-07-04 00:57:27
阅读次数:
75
本博客总结学习堆排序算法,以一个数组为例,采用大根堆进行升序排序,附有代码实现。 堆排序的思想 堆排序的逻辑是建立在完全二叉树的基础上。 有两个概念必须要了解: 大根堆:每个结点值都大于等于左右孩子结点值 小根堆:每个结点值都小于等于左右孩子结点值 以大根堆为例,将根结点与最后一个结点交换,弹出根结 ...
分类:
编程语言 时间:
2020-06-30 13:03:10
阅读次数:
63
数据结构 线性构造treap treap的线性构造可以使复杂度锐减到$O(n)$,很优秀 treap的本质就是小根堆+二叉搜索树,即保证val满足搜索树的同时,维护rad的小根堆。 现在我们先把数据预处理一下,按val值升序排序。那么我们不必再关系val,专注于rad即可 先考虑一个特殊情况,假如数 ...
分类:
其他好文 时间:
2020-06-29 23:07:14
阅读次数:
105
P3378 【模板】堆 #include<bits/stdc++.h> using namespace std; priority_queue<int,vector<int>,greater<int> >q;//小根堆 int n; int op; int x; int main(){ scanf( ...
分类:
其他好文 时间:
2020-06-29 18:42:21
阅读次数:
76
#走进堆 堆分为大根堆和小根堆,大根堆堆顶元素最大,越往下元素越小,小根堆相反,堆顶元素最小,越往下元素越大 ##1.定义 手写堆是什么,表示从来没用过,要写堆当然要用我STL的优先队列啦 priority_queue<int> q;//默认的优先队列是大根堆 priority_queue<int, ...
分类:
其他好文 时间:
2020-06-27 20:28:22
阅读次数:
80
##题意 $n$头牛,每头牛有一个开始吃草的时间和结束吃草的时间,当两头牛之间存在交点的时候, 这两头牛不能安排在同一个畜栏吃草,求需要的最小畜栏数目和每头牛对应的畜栏方案 贪心步骤: (1)将所有牛按开始吃草的时间排序; (2)用小根堆维护当前所有畜栏的最后一头牛的吃草结束时间; (3)如果当前的 ...
分类:
其他好文 时间:
2020-06-18 12:33:01
阅读次数:
43
左边大顶堆,右边小顶堆。右边数量比左边多一,左边放小的那半数,右边放大的那半 是偶数个,那就返回两个根堆的头结点的q平均值,如果是奇数,就是小根堆的数量大于大根堆数量1个,返回小根堆的头; 当左右平等数量的时候,往小根堆了加入,当小根堆大于大根堆时候,往大根堆里加入 1 priority_queue ...
分类:
其他好文 时间:
2020-05-30 21:36:43
阅读次数:
83
堆(heap) 定义 堆是一种比较特殊的数据结构,它是利用完全二叉树的结构来维护一组数据,可以看做是一棵树的数组对象,说白了,堆就是用数组实现的二叉树。根据根节点的值还分为大根堆和小根堆。在最大堆中,父节点的值比每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。例如下图就是一个 ...
分类:
其他好文 时间:
2020-05-24 15:13:48
阅读次数:
71
分享一份腾讯面试整体,整理了被问到的问题,想去腾讯必看
分类:
编程语言 时间:
2020-05-17 09:14:28
阅读次数:
84