less than 1 minute read

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]