以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
24. 用JavaScript手写一个Priority Queue

实现如下:

class PriorityQueue {
  constructor(compare) {
    // 数组存储元素
    this.elements = [];
    // compare函数返回-1, 0, 1决定优先级
    this.compare = compare;
  }
  
  add(element) {
    this.elements.push(element);
    // 内部使用sort对数组进行排序
    this.elements.sort(this.compare);
  }

  poll() {
    return this.elements.shift();
  }

  peek() {
    return this.elements[0];
  }

  size() {
    return this.elements.length;
  }
}

需要注意的是,我们使用数组内置的sort方法对元素进行排序,这可能在性能上有些损耗。如果有时间,我们可以手写一个堆(Heap)来优化它。

此外,PriorityQueue的底层实现还可以是链表、平衡树等实现。在实际工作中,我们也可以根据问题和数据规模来选择不同的实现。