Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MaxPriorityQueue is not defined

I am experiencing something that is confusing me.

While working through problems in javascript on leetcode, I came across a solution that implemented a MaxPriorityQueue in the solution.

The posted solution was:

Finally, there's a Max/MinPriorityQueue for JavaScript!

add -> enqueue( )
remove -> dequeue( )
highest number (peek) -> front( )
.element -> actual value

var lastStoneWeight = function(stones) {
    const m = new MaxPriorityQueue()
    for(const w of stones) m.enqueue(w)
    
    while(m.size() > 1){
        const diff = m.dequeue().element - m.dequeue().element
        if(diff > 0) m.enqueue(diff)
    }
 
    return m.size() === 0 ? 0 : m.front().element
};

I tried to implement this myself in my own environment and get:

const m = new MaxPriorityQueue();
            ^

ReferenceError: MaxPriorityQueue is not defined

at lastStoneWeight (C:\Users\steph\Desktop\coding-projects\learning-js\leetcode\last-stone-weight.js:55:13)
    at Object.<anonymous> (C:\Users\steph\Desktop\coding-projects\learning-js\leetcode\last-stone-weight.js:66:13)

I went and plugged the same code into leetcode and it ran without a hitch.

I tried to find documentation on a MaxPriorityQueue object but anything using a MPQ was implemented from scratch.

If someone could shed a bit of light on why this will not run in my personal environment, (nodejs, VSCode), I would appreciate it.

like image 878
Mossy82 Avatar asked Apr 26 '26 03:04

Mossy82


1 Answers

This is because you have @datastructures-js/priority-queue library imported in the JS runtime by default. It is mentioned https://support.leetcode.com/hc/en-us/articles/360011833974-What-are-the-environments-for-the-programming-languages-.

In your own run time, you will have to import it as

const {
  PriorityQueue,
  MinPriorityQueue,
  MaxPriorityQueue,
} = require('@datastructures-js/priority-queue');

or

import {
  PriorityQueue,
  MinPriorityQueue,
  MaxPriorityQueue,
  ICompare,
  IGetCompareValue,
} from '@datastructures-js/priority-queue';
like image 111
Omkar Kulkarni Avatar answered Apr 28 '26 06:04

Omkar Kulkarni



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!