DEV Community

tracelit
tracelit

Posted on • Originally published at tracelit.dev

LeetCode 215: Kth Largest Element In An Array — Step-by-Step Visual Trace

Medium — Heap | Array | Divide and Conquer | Priority Queue

The Problem

Find the kth largest element in an unsorted array. Note that it is the kth largest element in sorted order, not the kth distinct element.

Approach

Use a min-heap of size k to maintain the k largest elements seen so far. As we iterate through the array, we add each element to the heap and remove the smallest element if the heap size exceeds k. The root of the min-heap will be the kth largest element.

Time: O(n log k) · Space: O(k)

Code

import heapq

class Solution:
    def findKthLargest(self, nums: List[int], k: int) -> int:
        min_heap = []

        for num in nums:
            heapq.heappush(min_heap, num)
            if len(min_heap) > k:
                heapq.heappop(min_heap)

        return min_heap[0]
Enter fullscreen mode Exit fullscreen mode

Watch It Run

Watch the algorithm run step by step

Open interactive visualization

Try it yourself: Open TraceLit and step through every line.


Built with TraceLit — the visual algorithm tracer for LeetCode practice.

Top comments (0)