以下为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的底层实现还可以是链表、平衡树等实现。在实际工作中,我们也可以根据问题和数据规模来选择不同的实现。