假如有10000个数,如何快速找到前20大的数字呢?
全部评论
先用前20的数构建一个小根堆,然后依次遍历后边的元素与堆顶元素比较,如果大于堆顶元素就替换堆顶元素,所有元素遍历完毕剩下小根堆的元素就算前20大的元素
37 回复 分享
发布于 2023-05-25 21:22 重庆
这道题可以有很多延伸:(1)简单的TopK算法 (2)大文件无法一次加载进内存如何找出TopK数字 (3)大文件找出频率次数最高的K个数字 (4)系统设计:Top-K Hitter找出一定时段内点击量最高的视频、博文
15 回复 分享
发布于 2023-05-26 09:38 山东
1w个数很小,所以怎么都可以
5 回复 分享
发布于 2023-05-25 23:34 广东
这不就是常问的 nth_element,或者快速选择。如果明确只有20,写20个 if else 也行
5 回复 分享
发布于 2023-05-25 21:25 上海
看我Arrays.sort( );一套for循环然后立马回家吃饭
3 回复 分享
发布于 2023-05-30 14:33 山东
复杂度o(2n),其实是极限求和n+n/2+...,求前k大都是这个复杂度,根本原因是不需要保证数据有序性
3 回复 分享
发布于 2023-05-26 09:23 山东
那么多数据 内存是否存的下?存的下那就小根堆 当然数值范围小直接桶排, 存不下就要分治。
点赞 回复 分享
发布于 2023-06-22 17:16 广西
介不大二作业吗
点赞 回复 分享
发布于 2023-06-20 18:04 江苏
一把sort排序梭哈
点赞 回复 分享
发布于 2023-06-19 10:56 甘肃
一眼堆,做过好几次了
点赞 回复 分享
发布于 2023-06-18 23:30 广东
直接放进map里面,从后往前输入20个
点赞 回复 分享
发布于 2023-06-09 08:37 广东
大数据可以用分治思想,分成n份分别做堆排,然后从中选最大的
点赞 回复 分享
发布于 2023-06-03 00:14 浙江
用小根堆时间复杂度比快排底,但是我自己实测是发现快排比堆快
点赞 回复 分享
发布于 2023-05-31 12:31 陕西
小根堆
点赞 回复 分享
发布于 2023-05-26 00:45 浙江
理论上不考虑资源,可以实现O1
点赞 回复 分享
发布于 2023-05-25 17:56 天津
小顶堆?
点赞 回复 分享
发布于 2023-05-25 15:50 广东

相关推荐

2025-12-18 11:24
山西大学 测试工程师
A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下 HR 会来跟你谈。” 我当时脑子直接宕机,一句话都没憋出来。后面 HR 找我谈话,直属领导也在旁边。HR 说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
26
51
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务