LeetCode 215. Kth Largest Element in an Array

LeetCode 215

使用partition sort的方法,如果pivot的位置正好是k-1的位置,我们就找到了答案,不用继续排序。

    def findKthLargest(self, nums: List[int], k: int) -> int:
        def partitionK(nums:List[int], low, high, k:int) -> int:
            pivot = nums[low]
            left = low
            right = high

            while left < right:
                while nums[right] <= pivot and left < right:
                    right -=1
                if left < right:
                    nums[left] = nums[right]
                    left +=1

                while nums[left] > pivot and left < right:
                    left +=1
                if left < right:
                    nums[right] = nums[left]
                    right -=1
        
            nums[left] =pivot
            return left

        l = 0
        h = len(nums) -1
        p = partitionK(nums, l, h, k)
        while (p != k-1):
            if p > k-1:
                p = partitionK(nums, l, p-1, k)
            else:
                p = partitionK(nums, p+1, h, k)

        return nums[k-1]
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读