题解 | #寻找第K大#

寻找第K大

http://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf

# -*- coding:utf-8 -*-
import random

class Solution:
    def findKth(self, a, n, K):
        # write code here
        def qSort(a, l, r):
            if l >= r: return
            i, j = l, r
            p = random.randint(l, r)
            a[p], a[l] = a[l], a[p]
            while i < j:
                while i < j and a[j] > a[l] : j -= 1 # 先从右往左
                while i < j and a[i] <= a[l]: i += 1 # 再从左往右
                a[i], a[j] = a[j], a[i]
            a[l], a[i] = a[i], a[l]
            qSort(a, l, i-1)
            qSort(a, i+1, r)
        qSort(a, 0, n-1)
        return a[-K]
全部评论

相关推荐

点赞 评论 收藏
分享
点赞 评论 收藏
分享
鼠鼠第一次实习,啥也不懂一直是自己一个人吃的饭,不会做工作老是被嫌弃,大人的世界是这样的吗?
我是星星我会发亮:好的mt有两种,一种愿意教你的,一种几乎什么活都不给你派让你很闲允许你做自己事情的
实习吐槽大会
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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