4.4 KiB
4.4 KiB
id, challengeType, videoUrl, title
id | challengeType | videoUrl | title |
---|---|---|---|
587d8255367417b2b2512c74 | 1 | 创建优先级队列类 |
Description
[['kitten', 2], ['dog', 2], ['rabbit', 2]]
这里第二个值(整数)表示项目优先级。如果我们将优先级为1
['human', 1]
排入队列(假设优先级较低,则优先级较低),那么它将成为第一个出列的项目。该集合将是这样的: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]]
。我们已经开始在代码编辑器中编写PriorityQueue
。您需要添加一个enqueue
方法来添加具有优先级的项目,一个用于删除项目的dequeue
方法,一个用于返回队列中项目数量的size
方法,一个用于返回队列front
元素的front
方法,以及最后一个isEmpty
方法,如果队列为空则返回true
,否则返回false
。入enqueue
应接受上面显示格式的项目( ['human', 1]
),其中1
表示优先级。 dequeue
应该只返回当前项目,而不是其优先级。 Instructions
Tests
tests:
- text: 您的<code>Queue</code>类应该有一个<code>enqueue</code>方法。
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.enqueue === 'function')}()));
- text: 您的<code>Queue</code>类应该有一个<code>dequeue</code>方法。
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.dequeue === 'function')}()));
- text: 您的<code>Queue</code>类应该有一个<code>size</code>方法。
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.size === 'function')}()));
- text: 您的<code>Queue</code>类应该有一个<code>isEmpty</code>方法。
testString: assert((function(){var test = new PriorityQueue(); return (typeof test.isEmpty === 'function')}()));
- text: 当项目入队和出列时,您的PriorityQueue应使用<code>size</code>方法正确跟踪当前项目数。
testString: assert((function(){var test = new PriorityQueue(); test.enqueue(['David Brown', 2]); test.enqueue(['Jon Snow', 1]); var size1 = test.size(); test.dequeue(); var size2 = test.size(); test.enqueue(['A', 3]); test.enqueue(['B', 3]); test.enqueue(['C', 3]); return (size1 === 2 && size2 === 1 && test.size() === 4)}()));
- text: 当队列为空时, <code>isEmpty</code>方法应该返回<code>true</code> 。
testString: assert((function(){var test = new PriorityQueue(); test.enqueue(['A', 1]); test.enqueue(['B', 1]); test.dequeue(); var first = test.isEmpty(); test.dequeue(); return (!first && test.isEmpty()); }()));
- text: 优先级队列应该在具有较低优先级的项之前返回具有较高优先级的项,否则以先进先出顺序返回项。
testString: assert((function(){var test = new PriorityQueue(); test.enqueue(['A', 5]); test.enqueue(['B', 5]); test.enqueue(['C', 5]); test.enqueue(['D', 3]); test.enqueue(['E', 1]); test.enqueue(['F', 7]); var result = []; result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); return result.join('') === 'EDABCF';}()));
Challenge Seed
function PriorityQueue () {
this.collection = [];
this.printCollection = function() {
console.log(this.collection);
};
// Only change code below this line
// Only change code above this line
}
Solution
// solution required
/section>