题解 | #寻找第K大#

寻找第K大

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

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param a int整型一维数组 
# @param n int整型 
# @param K int整型 
# @return int整型
#
from typing import List

class Solution:
    def findKth(self , a: List[int], n: int, K: int) -> int:
        # write code here
        def quickSort(l: int, r: int, k: int) -> int:
            if l >= r:
                return a[l]
            i, j = l - 1, r + 1 
            x = a[l + (r - l) // 2]
            while i < j:
                while True:
                    i += 1
                    if a[i] >= x:
                        break
                while True:
                    j -= 1
                    if a[j] <= x:
                        break
                if i < j:
                    a[i], a[j] = a[j], a[i]
            s1 = j - l + 1
            if k <= s1:
                return quickSort(l, j, k)
            else:
                return quickSort(j + 1, r, k - s1)
        return quickSort(0, n - 1, n - K + 1)

算法刷题记录 文章被收录于专栏

刷题,记录牛客的101

全部评论

相关推荐

无敌虾孝子:喜欢爸爸还是喜欢妈妈
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务