classSolution: defmaxHeap(self,nums:[int],i:int,heap_size:int): while1: l_i=2*i+1 r_i=2*i+2 lst=i if l_i<heap_size and nums[l_i]>nums[lst]: lst=l_i if r_i<heap_size and nums[r_i]>nums[lst]: lst=r_i if lst==i: break nums[i],nums[lst]=nums[lst],nums[i] i=lst defbuildmaxHeap(self,nums:[int],heap_size:int)->None: for i inrange (heap_size//2-1,-1,-1): self.maxHeap(nums,i,heap_size) deffindKthLargest(self, nums: List[int], k: int) -> int: n=len(nums) heap_size=n self.buildmaxHeap(nums,heap_size) for i inrange(1,k): nums[0],nums[n-i]=nums[n-i],nums[0] heap_size-=1 self.maxHeap(nums,0,heap_size) return nums[0]