Skip to main content

Heaps

Special lib​

Create heap​

const {
MaxPriorityQueue,
MinPriorityQueue,
} = require("@datastructures-js/priority-queue");
const maxHeap = new MaxPriorityQueue({ priority: (x) => x });
const minHeap = new MinPriorityQueue({ priority: (x) => x });

enqueue(element) - add​

maxHeap.enqueue(10);
minHeap.enqueue(5);

dequeue() - delete​

let maxElement = maxHeap.dequeue().element;
let minElement = minHeap.dequeue().element;

front() - show top of the heap​

let frontMaxElement = maxHeap.front().element;
let frontMinElement = minHeap.front().element;

size()​

let sizeMaxHeap = maxHeap.size();
let sizeMinHeap = minHeap.size();

isEmpty()​

let isMaxHeapEmpty = maxHeap.isEmpty();
let isMinHeapEmpty = minHeap.isEmpty();

clear()​

maxHeap.clear();
minHeap.clear();

toArray()​

let maxHeapArray = maxHeap.toArray();
let minHeapArray = minHeap.toArray();

Find top k elements with heap​

const { MinPriorityQueue } = require("@datastructures-js/priority-queue");

function fn(arr, k) {
// Create a min-heap with a custom priority function
const heap = new MinPriorityQueue({ priority: (x) => x });

// Iterate over each number in the array
for (const num of arr) {
// Add the number to the heap
heap.enqueue(num);
// If the heap size exceeds k, remove the smallest element
if (heap.size() > k) {
heap.dequeue();
}
}

// Prepare the result array
const ans = new Array(k);
// Extract elements from the heap to get the k largest elements
for (let i = 0; i < k; i++) {
ans[i] = heap.dequeue().element;
}

// Return the result array
return ans;
}