LeetCode215 数组中的第K个最大元素(快排,python)

LeetCode215 数组中的第K个最大元素

快排写法

class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        
        k = len(nums) - k

        def qsort(l, r):
            if l == r: return nums[l]
            tag = l + 1
            for i in range(l + 1, r + 1):
                if nums[i] < nums[l]:
                    nums[i], nums[tag], tag = nums[tag], nums[i], tag + 1
            
            nums[l], nums[tag - 1] = nums[tag - 1], nums[l]
        
            if tag - 1 > k: return qsort(l, tag - 2)
            elif tag - 1 < k: return qsort(tag, r)
            else: return nums[tag - 1]
        
        return qsort(0, len(nums) - 1)

posted on 2022-07-19 17:45  solvit  阅读(76)  评论(0)    收藏  举报

导航