Bird
Raised Fist0
DSA Javascriptprogramming~30 mins

Kth Largest Element Using Max Heap in DSA Javascript - Build from Scratch

Choose your learning style10 modes available
Kth Largest Element Using Max Heap
📖 Scenario: You have a list of exam scores from students. You want to find the kth largest score to see who scored in the top ranks.
🎯 Goal: Build a program that uses a max heap to find the kth largest element in a list of numbers.
📋 What You'll Learn
Create an array called scores with exact values
Create a variable called k to hold the rank number
Build a max heap from the scores array
Extract the maximum element k times to find the kth largest score
Print the kth largest score
💡 Why This Matters
🌍 Real World
Finding the kth largest value is useful in ranking systems, like finding the top scores in exams or the highest sales in a store.
💼 Career
Understanding heaps and selection algorithms is important for software engineers working on data processing, search engines, and performance optimization.
Progress0 / 4 steps
1
Create the scores array
Create an array called scores with these exact values: 85, 42, 96, 73, 58, 99, 67
DSA Javascript
Hint

Use const scores = [85, 42, 96, 73, 58, 99, 67]; to create the array.

2
Set the kth largest rank
Create a variable called k and set it to 3 to find the 3rd largest score
DSA Javascript
Hint

Use const k = 3; to set the rank.

3
Build max heap and extract kth largest
Write a function called buildMaxHeap that takes an array and builds a max heap. Then write a function called extractMax that removes and returns the largest element from the heap. Use these functions to extract the maximum element k times from scores and store the last extracted value in a variable called kthLargest
DSA Javascript
Hint

Use heapify to build the max heap. Extract max k times to get the kth largest.

4
Print the kth largest score
Write a console.log statement to print the value of kthLargest
DSA Javascript
Hint

Use console.log(kthLargest); to print the result.

Practice

(1/5)
1. What is the main idea behind finding the kth largest element using a max heap?
easy
A. Build a max heap from the array and extract the max element k times
B. Sort the array and pick the kth element from the start
C. Use a min heap to store all elements and pop k times
D. Reverse the array and pick the kth element

Solution

  1. Step 1: Understand max heap property

    A max heap always keeps the largest element at the root, so extracting the root gives the largest element.
  2. Step 2: Extract max k times to get the kth largest

    By removing the root k times, the last extracted element is the kth largest.
  3. Final Answer:

    Build max heap and extract max k times -> Option A
  4. Quick Check:

    Max heap extraction = kth largest element [OK]
Hint: Extract max from max heap k times to find kth largest [OK]
Common Mistakes:
  • Using min heap instead of max heap
  • Sorting and picking wrong index
  • Extracting fewer or more than k times
2. Which of the following is the correct way to create a max heap from an array arr in JavaScript using a custom heap class?
easy
A. const maxHeap = new MaxHeap(arr); maxHeap.heapify();
B. const maxHeap = new MaxHeap(); maxHeap.insert(arr);
C. const maxHeap = new MaxHeap(); maxHeap.build(arr);
D. const maxHeap = new MaxHeap(arr); maxHeap.buildHeap();

Solution

  1. Step 1: Recognize typical max heap initialization

    Usually, a max heap class accepts an array and has a method like buildHeap() to create the heap structure.
  2. Step 2: Identify correct method call

    buildHeap() is the standard method to convert the array into a max heap, so calling it after initialization is correct.
  3. Final Answer:

    const maxHeap = new MaxHeap(arr); maxHeap.buildHeap(); -> Option D
  4. Quick Check:

    buildHeap() builds max heap from array [OK]
Hint: Use buildHeap() after passing array to MaxHeap constructor [OK]
Common Mistakes:
  • Calling insert with whole array instead of single elements
  • Using wrong method names like heapify or build
  • Not calling any method to build the heap
3. What will be the output of the following code snippet?
class MaxHeap {
  constructor(arr) {
    this.heap = arr;
    this.buildHeap();
  }
  buildHeap() {
    for (let i = Math.floor(this.heap.length / 2) - 1; i >= 0; i--) {
      this.heapify(i);
    }
  }
  heapify(i) {
    let largest = i;
    let left = 2 * i + 1;
    let right = 2 * i + 2;
    if (left < this.heap.length && this.heap[left] > this.heap[largest]) largest = left;
    if (right < this.heap.length && this.heap[right] > this.heap[largest]) largest = right;
    if (largest !== i) {
      [this.heap[i], this.heap[largest]] = [this.heap[largest], this.heap[i]];
      this.heapify(largest);
    }
  }
  extractMax() {
    if (this.heap.length === 0) return null;
    const max = this.heap[0];
    this.heap[0] = this.heap.pop();
    this.heapify(0);
    return max;
  }
}

const arr = [3, 2, 1, 5, 6, 4];
const maxHeap = new MaxHeap(arr);
let kthLargest;
for (let i = 0; i < 2; i++) {
  kthLargest = maxHeap.extractMax();
}
console.log(kthLargest);
medium
A. 6
B. 5
C. 4
D. 3

Solution

  1. Step 1: Build max heap from array

    Array [3,2,1,5,6,4] becomes max heap with root 6 after buildHeap.
  2. Step 2: Extract max twice

    First extractMax returns 6, second extractMax returns 5, so kthLargest after loop is 5.
  3. Final Answer:

    5 -> Option B
  4. Quick Check:

    2nd largest element = 5 [OK]
Hint: Extract max twice from max heap to get 2nd largest [OK]
Common Mistakes:
  • Assuming heap root changes incorrectly after extraction
  • Confusing 1st largest with 2nd largest
  • Not updating heap after extraction
4. Identify the bug in the following code that tries to find the 3rd largest element using a max heap:
class MaxHeap {
  constructor(arr) {
    this.heap = arr;
    this.buildHeap();
  }
  buildHeap() {
    for (let i = 0; i < this.heap.length / 2; i++) {
      this.heapify(i);
    }
  }
  heapify(i) {
    let largest = i;
    let left = 2 * i + 1;
    let right = 2 * i + 2;
    if (left < this.heap.length && this.heap[left] > this.heap[largest]) largest = left;
    if (right < this.heap.length && this.heap[right] > this.heap[largest]) largest = right;
    if (largest !== i) {
      [this.heap[i], this.heap[largest]] = [this.heap[largest], this.heap[i]];
      this.heapify(largest);
    }
  }
  extractMax() {
    if (this.heap.length === 0) return null;
    const max = this.heap[0];
    this.heap[0] = this.heap.pop();
    this.heapify(0);
    return max;
  }
}

const arr = [7, 10, 4, 3, 20, 15];
const maxHeap = new MaxHeap(arr);
let kthLargest;
for (let i = 0; i < 3; i++) {
  kthLargest = maxHeap.extractMax();
}
console.log(kthLargest);
medium
A. The buildHeap loop should run backwards from middle to 0
B. extractMax should not call heapify after popping
C. heapify should swap with smallest child instead of largest
D. The array should be sorted before building the heap

Solution

  1. Step 1: Analyze buildHeap loop direction

    Heap building requires heapify calls from last parent to root, so loop must run backwards from middle to 0.
  2. Step 2: Identify incorrect loop direction

    Current loop runs forwards, which does not correctly heapify the tree, causing incorrect heap structure.
  3. Final Answer:

    The buildHeap loop should run backwards from middle to 0 -> Option A
  4. Quick Check:

    buildHeap loop direction = backwards [OK]
Hint: buildHeap loop must run backwards from middle to root [OK]
Common Mistakes:
  • Running buildHeap loop forwards
  • Not calling heapify after extractMax
  • Swapping with wrong child in heapify
5. Given an array arr = [12, 3, 5, 7, 19, 0, 4], write a JavaScript function using a max heap to find the 4th largest element. What is the output of your function?
hard
A. 4
B. 5
C. 7
D. 3

Solution

  1. Step 1: Build max heap from array

    Array becomes max heap with root 19 after heapify.
  2. Step 2: Extract max 4 times

    Extracted elements in order: 19, 12, 7, 5. The 4th largest is 7.
  3. Final Answer:

    7 -> Option C
  4. Quick Check:

    4th largest element = 7 [OK]
Hint: Extract max k times; last extracted is kth largest [OK]
Common Mistakes:
  • Extracting fewer times than k
  • Confusing 3rd largest with 4th largest
  • Not rebuilding heap after extraction
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard