Problem Statement
leetcode problem link
My Solution [Accepted]
public class Solution {
public int FindKthLargest(int[] nums, int k) {
PriorityQueue<int, int> priorityQueue = new PriorityQueue<int, int>();
foreach (var num in nums) {
priorityQueue.Enqueue(num, num);
if (priorityQueue.Count > k) {
priorityQueue.Dequeue();
}
}
return priorityQueue.Peek();
}
}
Editorial
Approach 1: Sort
class Solution:
def findKthLargest(self, nums, k):
nums.sort(reverse=True)
return nums[k - 1]
Approach 2: Min-Heap
class Solution:
def findKthLargest(self, nums, k):
heap = []
for num in nums:
heapq.heappush(heap, num)
if len(heap) > k:
heapq.heappop(heap)
return heap[0]