24. create a Priority Queue in JavaScript

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 sooner

// now 5 is the only element

// 2 added

// 1 added

// since smaller number are sooner to be removed
// so this gives us 1

// 1 
// 1 is removed, 2 and 5 are left

// 2 is the smallest now, this returns 2

// 2 
// 2 is removed, only 5 is left

Think about the edge cases.