CODE

class Solution:        
    def findKthLargest(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: int
        """
        def partition(l, r):
            p = nums[(l + r)//2]
            while l <= r:
                while nums[l] < p: l += 1
                while nums[r] > p: r -= 1
                if l <= r:
                    nums[l], nums[r] = nums[r], nums[l]
                    l, r = l + 1, r - 1
            return l
        
        def quickselect(start, end):
            if start < end:
                part = partition(start, end)
                if part <= len(nums)-k:
                    quickselect(part, end)
                else:
                    quickselect(start, part-1)
        

        quickselect(0, len(nums)-1)
        return nums[len(nums)-k]
        

Last updated