关注
其实有点震惊出这个题,典型的quick select问题,我贡献一个我的代码供参考吧 def findKthLargest(nums, start, end, k):
if start >= end:
return nums[end]
left, right = start, end
pivot = nums[left + (right - left) / 2]
while left <= right:
while left <= right and nums[left] > pivot:
left += 1
while left <= right and nums[right] < pivot:
right -= 1
if left <= right:
nums[left], nums[right] = nums[right], nums[left]
left += 1
right -= 1
if start + k - 1 <= right:
return findKthLargest(nums, start, right, k)
if start + k - 1 >= left:
return findKthLargest(nums, left, end, k - (left - start))
return nums[right + 1]
其实就是典型的快速排序变体而已,while循环中关于pivot的那两个大小于号一改上面这个函数就变成快排了,个人觉得这个很好记忆而且是单独找这种第k大第k小之类问题的最优解了
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
19421次浏览 331人参与
# 硬件人你反向读研了吗 #
39805次浏览 608人参与
# 京东TGT #
27331次浏览 151人参与
# 硬件人秋招的第一个offer #
65592次浏览 1081人参与
# 滴滴工作体验 #
23267次浏览 123人参与
# 非技术岗投递进展 #
137541次浏览 1222人参与
# 材料进Fab厂真的劝退吗? #
36084次浏览 158人参与
# 不考虑转正,实习多久合适 #
24103次浏览 118人参与
# 机械求职避坑tips #
41058次浏览 355人参与
# 互联网回暖,腾讯要招5000+人! #
263521次浏览 4889人参与
# 面试经验谈 #
12530次浏览 190人参与
# 机械只有转码才有出路吗? #
125877次浏览 1590人参与
# 职场新人生存指南 #
332237次浏览 7133人参与
# 面试吐槽bot #
2509次浏览 31人参与
# 异地恋该为对方跳槽吗 #
23357次浏览 119人参与
# 硬件人更看重稳定还是高薪 #
38531次浏览 203人参与
# vivo求职进展汇总 #
208607次浏览 1341人参与
# 25届如何提前做秋招准备? #
163916次浏览 2451人参与
# 你遇到过哪些神仙同事 #
69365次浏览 623人参与
# 租房找室友 #
27525次浏览 144人参与
# 深信服求职进展汇总 #
188732次浏览 1694人参与