如何使用快速排序的思想从有重复数据的数据中找出第k大的元素,
例如[9,8,8,7,7,6,5,4,3]中第3大的元素是7。
有大佬知道怎么求解吗?
全部评论
快排但是不要取两边都做,只做一边就好
4 回复 分享
发布于 2022-03-27 22:05
leetcode215,高频考题
3 回复 分享
发布于 2022-04-11 12:08
个人觉得堆排序简单,构造出堆就行了
2 回复 分享
发布于 2022-03-31 00:21
快选算法,topK经典题了
2 回复 分享
发布于 2022-04-08 21:46
先去重在排序就好了呀
1 回复 分享
发布于 2022-03-27 17:26
快排,每次你能知道pivot的位置,pivot的位置比k大就去排后面,否则排前面,直到pivot=k为止
1 回复 分享
发布于 2022-03-27 18:55
了解一下快速选择算法,只做一遍就好了,说白了其实就是对树做了剪枝
1 回复 分享
发布于 2022-03-31 17:34
快排和堆都可以,我个人比较推荐堆
1 回复 分享
发布于 2022-04-08 16:20
改一下快速选择算法就好了,在快速选择的过程中维护一个变量记录前面有多少个去重后的数
1 回复 分享
发布于 2022-04-10 12:44
最小堆
1 回复 分享
发布于 2022-04-15 10:47
快速排序, 第一次将数据分为【left,mid】[mid,right] ,如果【left,mid】中的数据个数等于k ,此时mid就是第k 大的数 如果【left,mid】中的数据个数小于k ,从[mid,right]中找到第k-【left,right】大的数 如果【left,mid】中的数据大于k ,从【left,mid】中找到第k 大的数
1 回复 分享
发布于 2022-04-24 14:49
建议用最大堆,取到相同的元素不累减k就好
9 回复 分享
发布于 2022-03-29 16:50
直接快排,然后取n-k的元素不就好
点赞 回复 分享
发布于 2022-03-27 18:45
partition只做左边
点赞 回复 分享
发布于 2022-03-30 20:39
Quit select搜一下
点赞 回复 分享
发布于 2022-03-31 20:52
快速选择算法
点赞 回复 分享
发布于 2022-04-07 10:41
快速选择算法,复杂度On
点赞 回复 分享
发布于 2022-04-12 21:26
切分到n-k的时候判断一下有几个不同的,然后更新k
点赞 回复 分享
发布于 2022-04-15 16:34
用堆排序
点赞 回复 分享
发布于 2022-04-21 01:38
堆排序,重复的不算就好了
点赞 回复 分享
发布于 2022-04-21 10:18

相关推荐

11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
评论
8
21
分享
牛客网
牛客企业服务