题解 | #寻找第K大#

寻找第K大

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

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param a int整型一维数组
# @param n int整型
# @param K int整型
# @return int整型
#
class Solution:
    def kuaip(self, arr: List[int], str, end):
        i = str
        j = end
        temp = arr[i]
        while i < j:
            while i < j and arr[j] <= temp:
                j -= 1
            if i < j:
                arr[i] = arr[j]
                i += 1
            while i < j and arr[i] >temp:
                i += 1
            if i < j:
                arr[j] = arr[i]
                j -= 1
        arr[i] = temp

        return arr + [i]

    def findKth(self, a: List[int], n: int, K: int) -> int:
        # write code heredef kuaip(arr,str,end):
        i = 0
        j = n - 1
        lis = self.kuaip(a, i, j)
        while lis[-1] != K - 1:
            if lis[-1] < K - 1:
                i = lis[-1] + 1
                lis = self.kuaip(lis[:-1], i, j)
            if lis[-1] > K - 1:
                j = lis[-1] - 1
                lis = self.kuaip(lis[:-1], i, j)
        print(lis)
        return lis[:-1][K-1]

全部评论

相关推荐

Twilight_m...:还是不够贴近现实,中关村那块60平房子200万怎么可能拿的下来,交个首付还差不多
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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