首页
比赛
题库
课程
竞赛讨论区
登录
/
注册
去牛客
首页
>
第 k 小
6条解析
开通博客写题解
brbrbr
发表于 2022-02-26 01:56:13
类似于求中位数,求中位数是将前一半小的数放入大顶堆,而本题可以前k小的数放入大顶堆中,因此维护大小始终为k的大顶堆即可。 对于准备插入的数 如果size小于k就直接插入 大于等于堆顶就跳过 小于堆顶就踢出当前堆顶,插入 import java.io.*; import java.ut
展开全文
在刷题的单身狗很开心
发表于 2023-09-13 20:22:50
//建立两个堆,一个大根堆,一个小根堆。从K处劈开 #include <bits/stdc++.h> using namespace std; int n, m, k; const int maxn&nb
展开全文
宁宁也要爆wa
发表于 2023-07-11 11:28:35
Ciallo~(∠・ω< )⌒☆,大家好,本蒻蒟的第一篇题解,不喜勿喷。首先这题可以先用设置两个优先队列,一个大根堆p,一个设置成小根堆q,先用大根堆p存储输入数据,再用小根堆q维护前K个数据,当小于等于q的堆顶元素时入队,大于时入怕,最后输出去q的堆顶元素即可。 #include<io
展开全文
CH_cycyc
发表于 2024-12-22 08:04:31
链接:https://ac.nowcoder.com/acm/problem/214362 来源:牛客网 题目描述 有一个长度为n的数组,值为 a[i], 牛牛想找到数组中第 k 小的数。比如 1 2 2 3 4 6 中,第 3 小的数就是2.
展开全文
死于算法,生于算法
发表于 2021-11-08 16:53:53
最开始我的想法是把所有数据都保存在优先队列里,然后每当弹出时就用其他容器接住,然后再放回优先队列中,结果果不其然超时了。 于是看了题解,觉得有道理,可以用大根堆(less)来保存,先将所有数据保存在堆中,如果堆的大小大于k,那么也就是说后面的数据压根不可能成为答案,所以就出队。然后接着进行选择,如果
展开全文
Fss1
发表于 2025-03-21 13:35:15
双堆解法 类似于双堆求中位数 把前k小的数放进大根堆,大根堆的堆顶恰好就是第k小的数 剩下的数放进小根堆里 如果要插入一个x 如果x比大根堆堆顶大,就扔进小根堆不管它了 如果x比大根堆堆顶小,取出大根堆堆顶,把堆顶那个数放进小根堆,再把x放入大根堆 查找的时候,大根堆如果size是k,那么大根堆堆顶
展开全文
查看本题
查看本题讨论
相关比赛
9667-牛客小白月赛30
进入比赛
15853-五一特训1
进入比赛
19406-8-14
进入比赛
22904-2021秋季算法入门班第五章习题:优先队列、并查集
进入比赛
26447-猿创工作窒蓝桥杯预赛
进入比赛
等你来战
查看全部
牛客练习赛141
报名截止时间:2025-06-20 21:30
第十二届成都信息工程大学ACM程序设计竞赛同步赛
报名截止时间:2025-06-22 15:00
牛客周赛 Round 97
报名截止时间:2025-06-22 21:00
第五届上海理工大学程序设计全国挑战赛
报名截止时间:2025-06-28 17:30
2025牛客暑期多校训练营1
报名截止时间:2025-07-15 17:00
2025牛客暑期多校训练营2
报名截止时间:2025-07-17 17:00
扫描二维码,关注牛客
意见反馈
下载牛客APP,随时随地刷题