24. create a Priority Queue in JavaScript
Share
medium - accepted / - tried
Priority Queue is a commonly used data structure in algorithm problem. Especially useful for Top K problem with a huge amount of input data, since it could avoid sorting the whole but keep a fixed-length sorted portion of it.
Since there is no built-in Priority Queue in JavaScript, in a real interview, you should tell interview saying that "Suppose we already have a Priority Queue Class I can use", there is no time for you to write a Priority Queue from scratch.
But it is a good coding problem to practice, so please implement a Priority Queue with following interface
class PriorityQueue { // compare is a function defines the priority, which is the order // the elements closer to first element is sooner to be removed. constructor(compare) { } // add a new element to the queue // you need to put it in the right order add(element) { } // remove the head element and return poll() { } // get the head element peek() { } // get the amount of items in the queue size() { }}
Here is an example to make it clearer
const pq = new PriorityQueue((a, b) => a - b)// (a, b) => a - b means// smaller numbers are closer to index:0// which means smaller number are to be removed soonerpq.add(5)// now 5 is the only elementpq.add(2)// 2 addedpq.add(1)// 1 addedpq.peek()// since smaller number are sooner to be removed// so this gives us 1pq.poll()// 1 // 1 is removed, 2 and 5 are leftpq.peek()// 2 is the smallest now, this returns 2pq.poll()// 2 // 2 is removed, only 5 is left