
堆
青衫客36
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Acwing-53. 最小的k个数
固定容量为k的堆,直接将题目中给定的数组元素一个个往堆里插入即可,若堆中的元素数量大于k,则弹出堆顶元素,这就维护了一个容量为k的最大堆,使得堆中的元素为原数组中最小的k个。原创 2022-11-14 15:55:51 · 128 阅读 · 0 评论 -
Acwing-数据流中的中位数
把当前所有数维护成两个集合,第一个集合是一个小根堆,存的是比较大的那部分数,第二个集合是大根堆,存的是比较小的那部分数。每次把新来的数插到大根堆里(数值比较小的集合中),如果发现大根堆的堆顶元素比小根堆的堆顶元素大,说明新来的这个应该属于小根堆(数值比较大的集合),此时交换两个堆的堆顶元素,由于我们每次都往大根堆里面插,会导致大根堆中的元素越来越多,如果下面堆中元素的个数比上面堆中的元素个数多2,那就在下面堆中拿出一个来,插到上面的堆中。(注,上面的堆,下面的堆是依据下图所言)重点是如何维护这两个堆!原创 2022-10-31 13:22:14 · 104 阅读 · 0 评论